主頁 >  其他 > [ML從入門到入門] 初識人工神經網路、感知機演算法以及反向傳播演算法

[ML從入門到入門] 初識人工神經網路、感知機演算法以及反向傳播演算法

2023-06-18 07:54:07 其他

前言

人工神經網路(Artificial neural networks,ANNs)被廣泛認為誕生于 20 世紀四五十年代,其核心理論可以追溯到 19 世紀初 Adrien-Marie Legendre 發明的最小二乘法,而在今天,經過了半個世紀互聯網和計算機技術的迅猛發展,這片耕耘良久的沃土重新掀起了機器學習的研究熱潮,

本文主要介紹感知器演算法、多層神經網路及其后向傳播演算法,推導程序主要參考自胡浩基教授的機器學習公開課程, 

文章面向有一定基礎的讀者,至少要對二分類問題和線性分類有一定了解,如果是零基礎的讀者,建議先閱讀上一篇關于支持向量機的文章,

 

初識人工神經網路

神經元是神經系統功能的基本單位,大量的神經元構成了我們的大腦,電化學信號在這些神經元之間傳遞,賦予了我們思考的能力,人類為了在計算機上重現生物神經元的功能,對其進行數學建模,然后這些 人工神經元(Artificial neuron)被組合起來,形成人工神經網路,用以處理復雜問題,

和上一篇文章介紹的支持向量機一樣,我們將大量的訓練樣本輸入到人工神經網路中,每個人工神經元中的權重值將在訓練程序中被不斷修正,最終使人工神經網路具備對樣本的判別能力,這就像是人類的學習程序,先根據自己的判斷得出答案,再參考正確答案,對比差異,調整解題思路,經過大量訓練后,解題能力將得到提升,

人工神經元

下圖展示的是生物多極神經元的結構,圖中可以看到,多個信號從樹突(Dendrite)輸入,在胞體(Soma)進行匯總處理,經由軸突(Axon),最后在軸突末梢輸出信號,

1943年,Warren McCulloch 和 Walter Pitts 基于生物神經元的生理特征,建立了單個生物神經元的數學模型,如下圖:

多個信號 $x$ 乘以其相應的權重 $\omega$ 之后進行求和,最后傳入激活函式 $\varphi$ 得到輸出結果,激活函式是一個非線性函式,這是模擬了胞體處理電化學信號的程序,也即當胞體的電勢達到一定閾值時,才會向軸突傳遞信號脈沖,這個程序記作:

$y_{k}=\varphi\left(\sum \limits ^{m}_{i=0} \omega_{ki}x_{i}+b_{k}\right)$

事實上,這個數學模型并沒有太多生物方面的依據,是否準確描述了生物神經元的作業程序,我們無從知曉,

但從數學角度來分析,非線性的特點讓激活函式能更好地擬合訓練樣本,在上一篇文章介紹 SVM 處理非線性樣本時,我們深刻地認識到線性函式的局限性,ANN 雖然不如 SVM 那么優雅,但非線性函式的優勢讓它可以應對更復雜的場景,

人工神經網路的結構

人工神經網路(接下來簡稱為 ANN)由多個人工神經元組成,下圖是一個簡單的三層 ANN 示例:

ANN 的結構可以劃分為輸入層、隱藏層和輸出層,根據不同的任務場景,需要適當調整隱藏層的層數以及各層的神經元個數,如上圖展示的就是一個 3 層 ANN,輸入層一般不計入層數,

ANN 的訓練程序與 SVM 異曲同工,區別是 SVM 每次需要輸入所有樣本,而 ANN 則是將訓練樣本逐一輸入,通過優化調整隱藏層中的 $\omega$ 和 $b$,使輸出結果和訓練樣本標簽之間的差異不斷縮小,

如果你了解過 SVM 的話,應該知道 SVM 的作業原理是通過線性函式來區分兩種樣本,那 ANN 又是如何作業的呢?

一個應用例子

這是吳恩達在公開課上舉的一個例子,它非常通俗易懂地展現了 ANN 的作業原理,

網購衣服時會發現,只要輸入身高和體重,就可以得到推薦尺碼,假設某服裝廠即將推出一款新品,現需知道 M 碼適合哪種身高體重的消費者,在經過試驗性地投放和調研后,得到了一批 M 碼購買者的資料,繪制到一個二維特征空間中如下圖:

我們仍然使用上一小節的三層 ANN 來解決廠家的需求,為了幫助理解,我們暫時忽略激活函式 $\varphi$,假設該 ANN 經過這些樣本的訓練,得到模型如下圖:

可以看到,上圖三條直線兩兩相交,將 M 碼的樣本包圍在一個三角形區域內,顯然,這三條直線分別代表著該 ANN 第一層中三個神經元各自的決策邊界,決策邊界是不同樣本之間的分界線,如果顧客輸入的身高體重落在三角形區域內,那么該 ANN 模型將會認為這個顧客適合購買 M 碼,反之亦然,同時也可以進一步推出,如果我們增加神經元的數量,或者非線性激活函式,最終將圍出一個更加精細、更加擬合訓練樣本的區域,

在這個例子中,ANN 的作業程序可以總結為:顧客輸入身高體重后,第一層的三個神經元各自判斷資料落在自身決策邊界的哪一側,然后三個判斷結果傳遞給第二層,第二層的神經元再進一步判斷資料是否落在三角區域內,如果在三角區域內則推薦顧客購買 M 碼,否則輸出不推薦,

 

感知機

在正式介紹多層神經網路前,我們先來了解一下 感知機(Perceptron),

感知機由 Frank Rosenblatt 在 1957 年提出,這是最早嘗試用線性函式解決二分類問題的演算法,后來出現的 SVM 可以看作是它的加強版,

感知機使用的線性函式如下:

$f\left(X\right)=\omega^{T}X+b$

$X$ 是輸入的特征向量;$\omega$ 是權重,它的維度和 $X$ 相同;$b$ 是偏置,和 SVM 一樣,通常定義 $f\left(X\right)=0$ 作為決策邊界(暫且認為是一條直線),被這條直線分割開的兩側,分別代表不同的類別,

對于二分類問題,樣本標簽還是設為 $y_{i} \in \left\{+1,-1\right\}$,$N$ 個訓練樣本集合記作:

$\left\{ \left( X_{i},y_{i}\right)\right\} _{i=1}^{N}$

訓練目標是使所有訓練樣本被正確分類,可以用不等式表示:

$y_{i}f\left(X_{i}\right)\ge 0\ \left(i=1,2,\cdots,N\right)$

訓練演算法

感知機的訓練演算法被稱為 感知機學習演算法(Perceptron Learning Algorithm,PLA),

訓練程序很簡單,其實就是不斷調整這條直線的斜率(調整 $\omega$)以及對直線進行平移(調整 $b$),直到直線準確分隔開兩種訓練樣本,具體程序如下:

PLA 與 SVM 最大的區別是,PLA 每輪迭代只輸入一個 $X_{i}$,而 SVM 每輪迭代所有 $X_{i}$ 都會參與運算,

收斂證明

在證明演算法收斂前,為了方便推導,我們重新對 $\omega$ 和 $X$ 進行定義,改用增廣向量的形式來表示:

$\vec{X}_{i}=\begin{bmatrix}y_{i}X_{i}\\ y_{i}\end{bmatrix}$

$\vec{\omega}=\begin{bmatrix}\omega \\ b \end{bmatrix}$

訓練程序的書寫方式可以簡化為:

在上一篇文章推導 SVM 時就已經提到,對線性方程進行縮放并不會改變它的性質:

$\vec{\omega}^{T}\vec{X}_{i} = 0$

$\Updownarrow$

$\alpha\vec{\omega}^{T}\vec{X}_{i} = 0$

當然,這里的 $\alpha$ 要取大于零的實數($\alpha \in R^{+}$),如果小于零會違背前面定義的優化目標 $\vec{\omega}^{T}\vec{X}_{i} \ge 0$,

了解了以上前提后,接下來開始證明收斂,當然,以下推導的前提是訓練樣本線性可分,

假設存在 $\vec{\omega}_{opt}$,使 $\vec{\omega}_{opt}^{T}\vec{X}_{i} \ge 0\ \left(i=1,2,\cdots,N\right)$ 成立,那么 $\vec{\omega}_{opt}$ 同樣可以進行 $\alpha$ 倍的縮放:

$\vec{\omega}_{opt}^{T}\vec{X}_{i} = 0$

$\Updownarrow$

$\alpha\vec{\omega}_{opt}^{T}\vec{X}_{i} = 0$

假設在第 $k$ 輪迭代,仍然有 $X_{i}$ 使 $\vec{\omega}_{k}^{T}\vec{X}_{i} < 0$,又根據前面訓練程序可知,兩次相鄰迭代存在如下關系:

可以進一步推出,當 $\alpha$ 足夠大時,存在:

$\left\|\vec{X}_{i}\right\|^{2}+2\vec{\omega}_{k}^{T}\vec{X}_{i}-2\alpha\vec{\omega}_{opt}\vec{X}_{i}<0$

于是可以得到:

$\left \| \vec{\omega}_{k+1}-\alpha\vec{\omega}_{opt} \right \|^{2}<\left \| \vec{\omega}_{k}-\alpha\vec{\omega}_{opt} \right \|^{2}$

上面的不等式可以看出,隨著迭代次數的增加,$\omega_{k}$ 逐漸趨近于 $\alpha\omega_{opt}$,但這不足以證明 $\omega_{k}$ 收斂,因為在逼近 $\alpha\omega_{opt}$ 的程序中,收斂速度也可能逐漸變小直到忽略不計,所以接下來我們要做的是去定量分析其收斂速度,

設:

$\beta=\max \limits_{i=1,2,\cdots,N} \left\{\|\vec{X}_{i}\|\right\}$

$\gamma=\min \limits_{i=1,2,\cdots,N} \left\{\vec{\omega}_{opt}^{T}\vec{X}_{i}\right\}$

取:

$\alpha=\frac{\beta^{2}+1}{2\gamma}$

可得:

則:

$\left \| \vec{\omega}_{k+1}-\alpha\vec{\omega}_{opt} \right \|^{2}<\left \| \vec{\omega}_{k}-\alpha\vec{\omega}_{opt} \right \|^{2} - 1$

設 $D=\left \| \vec{\omega}_{0}-\alpha\vec{\omega}_{opt} \right \|$,根據上面的不等式可知,當 $\alpha=\frac{\beta^{2}+1}{2\gamma}$ 時,最多經過 $D^{2}$ 輪迭代,$\vec{\omega}$ 收斂至 $\alpha\vec{\omega}_{opt}$,

另一種收斂證明

這個證明思路參考自康奈爾大學的公開課程,原文見鏈接,

與上一種證明方法取指定的 $\alpha$ 值類似,首先是取:

$\left \| \vec{\omega}_{opt} \right \|=1$

$0<\left \| \vec{X}_{i} \right \| \le 1$

$\vec{\omega}_{opt}$ 和 $\vec{X}_{i}$ 是向量,所以他們的模可以隨意取值,

然后,我們在所有樣本向量中,選一個到決策邊界距離最小的樣本,該樣本向量到決策邊界的距離使用 $\gamma$ 來表示:

接下來分別分析 $\vec{\omega}^{T}\vec{\omega}_{opt}$、$\vec{\omega}^{T}\vec{\omega}$ 與 $\gamma$ 的關系,

先來分析 $\vec{\omega}^{T}\vec{\omega}_{opt}$:

顯然,在經過 $M$ 輪迭代后,有:

$\vec{\omega}_{M+1}^{T}\vec{\omega}_{opt} \ge M\gamma$

接著來分析 $\vec{\omega}^{T}\vec{\omega}$:

同理,在經過 $M$ 輪迭代后,有:

$\vec{\omega}_{M+1}^{T}\vec{\omega}_{M+1} \le M$

再來看一下 $\vec{\omega}^{T}\vec{\omega}_{opt}$ 和 $\vec{\omega}^{T}\vec{\omega}$ 之間的關系:

$\vec{\omega}_{M+1}^{T}\vec{\omega}_{opt}=\|\vec{\omega}_{M+1}\|\cos \theta\le\|\vec{\omega}_{M+1}\|=\sqrt{\vec{\omega}_{M+1}^{T}\vec{\omega}_{M+1}}$

這里的 $\theta$ 是 $\vec{\omega}_{M+1}$ 和 $\vec{\omega}_{opt}$ 之間的角度,

聯立以上所有條件可以得到結論:

由上面不等式可知,當 $\left \| \vec{\omega}_{opt} \right \|=1$ 且 $0<\left \| \vec{X}_{i} \right \| \le 1$ 時,最多經過 $\frac{1}{\gamma^{2}}$ 輪迭代,$\vec{\omega}$ 收斂至 $\vec{\omega}_{opt}$,

 

多層感知機

顧名思義,多層感知機(Multi-Layer Perception,MLP)由多層神經元的疊加組成,上一層神經元的輸出做為輸入傳遞給下一層神經元,MLP 一般是指擁有至少一個隱藏層的全連接 ANN 模型,且各層使用的激活函式都相同,相較于單層感知機,MLP 必須加入非線性激活函式,否則增加再多的層數也和單層的效果是相同的,

前面我們淺析了 ANN 的結構和作業原理,相信各位讀者已經有了基本的概念,MLP 在嚴格定義上屬于 ANN 的一種,但在很多語境下都使用 ANN 指代 MLP,下面借助一個簡單的 3 層 MLP 來理解其作業原理:

最終目標是使 MLP 模型盡可能地擬合訓練樣本,可以量化為下面的目標函式:

最小化:$E=\frac{1}{2}\left\|y-Y\right\|^{2}$

$y$ 代表輸出層輸出的向量;$Y$ 代表訓練樣本的標簽,顯然,MLP 的輸出 $y$ 和樣本標簽 $Y$ 越接近越好,我們將兩者相減,最終要使 $E$ 取得最小值,科學家們構造了各種各樣的目標函式,但為減少計算難度,一般都是易于求導的函式,

訓練演算法

接下來介紹的訓練演算法,將解答 ANN 如何調整 $\omega$ 和 $b$ 來使 $E$ 的值達到最小,

反向傳播演算法

我們常用 反向傳播演算法(Backpropagation,BP)訓練 ANN,它也是一種啟發式演算法,顧名思義,該演算法從輸出層開始,將計算結果一層層地由后往前反向傳遞,

不同于 PLA 演算法簡單粗暴地進行加減操作,BP 演算法的本質是 梯度下降法(Gradient Descent),梯度下降法用于求函式的極值點,例如求某函式 $f\left(\omega\right)$ 的極小值點,首先是賦予 $\omega$ 一個初始值,然后通過下面的計算得到新的 $\omega$,重復此程序,直到 $\omega$ 不再變化或變化極小為止,此時的 $\omega$ 即可認為是極小值點,迭代程序記作:

$\omega_{k+1}=\omega_{k}-\left.\eta\ \frac{\mathrm{d} f\left(\omega\right)}{\mathrm{d} \omega}\right|_{\omega_{k}}$

這里的 $\eta$ 是一個大于零的自定義值,稱為 學習率(Learning Rate),代表梯度下降的步長,其取值將影響收斂的效率,它可以是一個固定值,但如果取值太大可能會導致無法收斂,為避免這種情況發生,可以隨著迭代次數的增加不斷減小 $\eta$ 的值,

接著來分析梯度下降的收斂原理,

我們知道,從微分角度分析一個函式可以得到如下關系:

將 $\omega_{k+1}$ 代入上面的公式可得:

可以看到,隨著迭代次數的增加,$f\left(\cdot\right)$ 的值將越來越小,如果函式連續可導且存在極值點,理論上經過有限次迭代后可求得極值點,

讓我們重新回歸本節的重點,BP 演算法,

確切來說,BP 演算法分為兩個階段,初始化 $\omega$ 和 $b$ 后,第一階段是前向傳遞,也即計算出最后的輸出值,第二階段才是反向傳遞,從輸出層開始往反方向計算調整各層的權重 $\omega$ 和偏置 $b$,這兩個階段重復多次后,$\omega$ 和 $b$ 將收斂至一個合適的區間,

第二階段使用梯度下降法對 MLP 各個節點進行求導時,在鏈式法則的作用下,我們不得不從后往前計算各層的節點,并且計算產生的值在層與層之間傳遞,所以才被稱為“反向傳播”或“后向傳播”,

下面拆解 MLP 網路的一部分來做分析,以達到見微知著的效果:

現在只關注圖中深色的節點,

結合上圖,BP 演算法使用梯度下降對每個 $b$ 和 $\omega$ 進行更新的程序,可以記作:

根據鏈式法則,分別對 $b^{(m)}_{i}$ 和 $\omega^{(m)}_{ij}$ 進行求偏導:

令:

綜上所述,可得:

最終,BP 演算法每輪迭代的每個分量更新程序可以記作:

可以看到,求任意一個權重時,都需要依賴后一層的計算結果,這就導致了 BP 演算法需要從輸出層開始,由后往前進行計算,

前向前向傳播演算法

深度學習領域的著名學者 Geoffrey Hinton,于 2022 年提出了一種新的神經網路學習演算法,前向前向傳播演算法(Forward-Forward Algorithm),詳細見此論文,相關實作參考該git專案,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555463.html

標籤:其他

上一篇:不要錯過!限時免費分享最新AIGC資料報告(精選版)!

下一篇:返回列表

標籤雲
其他(161204) Python(38240) JavaScript(25504) Java(18245) C(15237) 區塊鏈(8271) C#(7972) AI(7469) 爪哇(7425) MySQL(7256) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4601) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2436) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) HtmlCss(1968) 功能(1967) Web開發(1951) C++(1941) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • [ML從入門到入門] 初識人工神經網路、感知機演算法以及反向傳播

    前言 人工神經網路(Artificial neural networks,ANNs)被廣泛認為誕生于 20 世紀四五十年代,其核心理論可以追溯到 19 世紀初 Adrien-Marie Legendre 發明的最小二乘法,而在今天,經過了半個世紀互聯網和計算機技術的迅猛發展,這片耕耘良久的沃土重新掀 ......

    uj5u.com 2023-06-18 07:54:07 more
  • 不要錯過!限時免費分享最新AIGC資料報告(精選版)!

    最近要說最火的莫過于AIGC和ChatGPT了,很多人都想找些這方面的資料來學習。網路上有很多購買ChatGPT研究報告的賬號,但這些渠道收集的資料魚龍混雜,動輒幾百上千份,讓讀者無從下手,不知道哪些是重點,并且價格還不便宜。 AI觀星臺一直非常關注并不斷收錄有關ChatGPT、Midjourney ......

    uj5u.com 2023-06-18 07:53:56 more
  • AtCoder Beginner Contest 306

    ## [A - Echo (abc306 a)](https://atcoder.jp/contests/abc306/tasks/abc306_a) ### 題目大意 給定一個字串,將每個字符輸出兩次。 ### 解題思路 模擬即可。 神奇的代碼 ```cpp #include using nam ......

    uj5u.com 2023-06-18 07:53:24 more
  • 將HTML網頁轉換為Markdown格式的工具及方法

    ## 保存博客文章 早期在markdown語法還沒有推出來之前,撰寫blog是在網頁上或olw寫的,也就是文章是保存在對方的主機上。 最近計劃把我在博客園的一些早期html文章轉換成markdown的檔案,因為md更好地保存,經過實踐之后,我保留這兩個工具。 > PS. 也嘗試過python的腳本版 ......

    uj5u.com 2023-06-18 07:53:04 more
  • docker構建FreeSWITCH編譯環境及打包

    作業系統 :CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 Docker版本:23.0.6 FreeSWITCH這種比較復雜的系統,使用容器部署是比較方便的,今天記錄下CentOS 7環境下使用docker構建FreeSWITCH編譯環境及打包發布的程序。 一、資源準備 1、 ......

    uj5u.com 2023-06-18 07:51:42 more
  • 【介面測驗】Postman(三)-變數與集合

    ? 在Postman中,我們進行介面測驗一般是以集合為單位,而在日常應用中,我們會經常使用到變數。下面我們將介紹一下變數和集合的一些用法。 ......

    uj5u.com 2023-06-18 07:50:31 more
  • Python自動化測驗基礎必備知識點總結

    性能系統負載能力穩定性過載操作下的系統瓶頸自動化測驗,使用程式代替人工,可以提高測驗效率性,自動化測驗能自動化使用代碼模擬大量用戶,讓用戶請求多頁和多用戶并發請求收集引數,并對系統負載能力進行統計生成報告。 ......

    uj5u.com 2023-06-18 07:50:08 more
  • 讀資料壓縮入門筆記06_背景關系轉換

    ![](https://img2023.cnblogs.com/blog/3076680/202306/3076680-20230616160541114-747303059.png) # 1. 壓縮演算法可歸為兩類 ## 1.1. 統計壓縮(即VLC) ## 1.2. 字典壓縮(如LZ78) ## ......

    uj5u.com 2023-06-17 08:04:28 more
  • ChatGPT拒絕做這5件事,還有20件它也不會做!

    自從ChatGPT和其他生成式AI應用程式出現以來,我們一直在探索我們可以用它們做什么。看起來ChatGPT可以做任何事情。但在本文中,我們將探討ChatGPT不會或無法做的事情。 ......

    uj5u.com 2023-06-17 08:04:14 more
  • LGV引理

    # LGV引理 定義 $A$ 是起點集合 $\{a_1,a_2,...,a_n\}$ 。 $B$ 是終點集合 $\{b_1,b_2,...,b_n\}$。 定義 $\omega(P)$ 為路徑 $P$ 每一條邊權值的乘積,即 : $$ \omega(P) = \prod_{e \in P}w_e $ ......

    uj5u.com 2023-06-17 08:04:07 more