有監(jiān)督學(xué)習(xí)
- Supervisied Learning
- 輸入的數(shù)據(jù)為訓(xùn)練數(shù)據(jù);
- 模型在訓(xùn)練過程中進(jìn)行預(yù)期判斷;
- 判斷錯誤的話進(jìn)行修正;
- 直到模型判斷預(yù)期達(dá)到要求的精確性;
- 關(guān)鍵方法為分類和回歸
- 邏輯回歸(Logistic Regression)
- BP神經(jīng)網(wǎng)絡(luò)(Back Propagation Neural Network)
無監(jiān)督學(xué)習(xí)
- Unsupervisied Learning
- 沒有訓(xùn)練數(shù)據(jù);
- 模型基于無標(biāo)記數(shù)據(jù)進(jìn)行判斷;
- 關(guān)鍵方法為關(guān)聯(lián)規(guī)則學(xué)習(xí)和聚合;
訓(xùn)練
- Training;
- 通過訓(xùn)練優(yōu)化自身網(wǎng)絡(luò)參數(shù);
- 讓模型更為準(zhǔn)確;
- 這個過程稱為訓(xùn)練;
推理
- Inference;
- 訓(xùn)練好的模型,在訓(xùn)練集上表現(xiàn)良好;
- 我們希望其對未見過的數(shù)據(jù)(現(xiàn)場數(shù)據(jù))能夠表現(xiàn)的一樣好;
- 如果現(xiàn)場數(shù)據(jù)的區(qū)分率比較高,證明模型的訓(xùn)練效果較好;
- 整個過程稱為推理;
優(yōu)化和泛化
- 深度學(xué)習(xí)的根本問題是優(yōu)化和泛化的對立;
- 優(yōu)化:optimization指調(diào)節(jié)模型在訓(xùn)練集上得到最佳性能(學(xué)習(xí));
- 泛化:generalization指訓(xùn)練好的模型在現(xiàn)場數(shù)據(jù)下的性能表現(xiàn)(推理);
數(shù)據(jù)集的分類
- 訓(xùn)練集:實(shí)際用于訓(xùn)練算法的數(shù)據(jù)集合;
- 訓(xùn)練集用于計(jì)算梯度,確定每次迭代中網(wǎng)絡(luò)權(quán)值的更新;
- 驗(yàn)證集:用于跟蹤學(xué)習(xí)效果的數(shù)據(jù)集;
- 驗(yàn)證集是一個指示器,表明訓(xùn)練數(shù)據(jù)點(diǎn)之間形成的網(wǎng)絡(luò)函數(shù)的變化;
- 驗(yàn)證集上的誤差值在整個訓(xùn)練過程中都將被監(jiān)測;
- 測試集:用于產(chǎn)生最后結(jié)果的數(shù)據(jù)集;
對測試集有效反應(yīng)網(wǎng)絡(luò)泛化能力的要求
- 不能以任何形式用于網(wǎng)絡(luò)訓(xùn)練;
- 不能用于同一組備選網(wǎng)絡(luò)進(jìn)行挑選;
- 測試集智能在訓(xùn)練完成和模型選擇完成后使用;
- 測試集必須代表網(wǎng)絡(luò)使用中所涉及的所有可能情況;
交叉驗(yàn)證
- 將數(shù)據(jù)分成3個部分(也可以分成更多份);
- 第一部分用于測試,2\3部分用作訓(xùn)練,計(jì)算準(zhǔn)確度;
- 第二部分用于測試,1\3部分用作訓(xùn)練,計(jì)算準(zhǔn)確度;
- 第三部分用于測試,1\2部分用作訓(xùn)練,計(jì)算準(zhǔn)確度;
- 之后算出三個準(zhǔn)確度的平均值,給出最后的準(zhǔn)確度
bp神經(jīng)網(wǎng)絡(luò)
- Back-Propagation Network 1986年提出,
- 一種按照誤差逆向傳播算法訓(xùn)練的多層前饋網(wǎng)絡(luò);
- 是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)模型之一;
- 用于函數(shù)逼近\模型識別分類\數(shù)據(jù)壓縮和時間序列預(yù)測;
- 又稱反向傳播神經(jīng)網(wǎng)絡(luò);
- 是一種有監(jiān)督學(xué)習(xí)的算法;
- 具有很強(qiáng)的自適應(yīng)\自學(xué)習(xí)\非線性映射能力;
- 能較好的解決數(shù)據(jù)少\信息貧乏\不確定性問題;
- 不受非線性模型的限制;
- 典型的BP網(wǎng)絡(luò)含有三層:輸入層\隱藏層\輸出層;
- 各層之間全連接,同層之間無連接;
- 隱藏層可有很多層;
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練?
- 利用神經(jīng)網(wǎng)絡(luò)解決問題
- 比如:圖像分割\邊界探測;
- 輸入x與輸出y之間的關(guān)系:y=f(x)是不清楚的;
- 但是知道f不是簡單的線性函數(shù);
- 應(yīng)該是一個抽象的復(fù)雜關(guān)系;
- 利用神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)這個關(guān)系,存放在model中;
- 利用model推測訓(xùn)練集之外的數(shù)據(jù);
- 得到期望的結(jié)果;
訓(xùn)練(學(xué)習(xí))過程
- 正向傳播:
- 信號從輸入層進(jìn)入;
- 經(jīng)過各隱藏層到達(dá)輸出層;
- 輸出層獲得實(shí)際的響應(yīng)值;
- 與實(shí)際值比較,若誤差較大;
- 轉(zhuǎn)入誤差反向傳播階段;
- 反向傳播
- 按照梯度下降的方法;
- 從輸出層經(jīng)各隱藏層不斷的調(diào)整各神經(jīng)元的連接權(quán)值和閾值;
- 反復(fù)迭代;
- 直到網(wǎng)絡(luò)輸入誤差小到可接受的程度;
- 或者達(dá)到預(yù)先指定的學(xué)習(xí)次數(shù)
?相關(guān)術(shù)語
代(Epoch):
- 使用訓(xùn)練集的全部數(shù)據(jù);
- 對模型進(jìn)行一次完整訓(xùn)練;
- 稱為一代訓(xùn)練
批大小(Batch size):
- 使用訓(xùn)練集的一小部分樣本;
- 對模型權(quán)重進(jìn)行一次反向傳播的參數(shù)更新;
- 這小部分樣本被稱為"一批數(shù)據(jù)"
迭代(Iteration)
- 使用一個Batch數(shù)據(jù);
- 對模型進(jìn)行一次參數(shù)更新的過程;
- 被稱為一次迭代或一次訓(xùn)練;
- 每次迭代的結(jié)果作為下次迭代的初始值;
- 一個迭代=一個正向傳播+一個反向傳播
訓(xùn)練批次的計(jì)算
- ;
- 比如訓(xùn)練集樣本數(shù)量500個;
- batchsize=10;
- iteration=50,
- epoch=1
訓(xùn)練過程
- 提取特征向量作為輸入
- 定義神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),包括隱藏層數(shù)量,激活函數(shù)等
- 利用反向傳播不斷優(yōu)化權(quán)重,達(dá)到合理水平
- 使用網(wǎng)絡(luò)預(yù)測現(xiàn)場數(shù)據(jù)(推理)
具體的訓(xùn)練過程
- 選擇樣本集合的一個樣本,為數(shù)據(jù),為標(biāo)簽(所屬類別);
- 送入網(wǎng)絡(luò),計(jì)算網(wǎng)絡(luò)的實(shí)際輸出Y(此時網(wǎng)絡(luò)中的權(quán)重應(yīng)該是隨機(jī)的)
- 計(jì)算(預(yù)測與實(shí)際的偏差)
- 根據(jù)D調(diào)整網(wǎng)絡(luò)的權(quán)重;
- 對每個樣本重復(fù)上述過程;
- 直到整個樣本集的誤差不超過規(guī)定范圍;
更具體的訓(xùn)練過程
- 參數(shù)的隨機(jī)初始化;
- 前向傳播計(jì)算每個樣本對應(yīng)的輸出節(jié)點(diǎn)激活函數(shù)值
- 計(jì)算損失函數(shù)
- 反向傳播計(jì)算偏導(dǎo)數(shù)
- 使用梯度下降或者先進(jìn)的優(yōu)化方法跟新權(quán)值
參數(shù)的隨機(jī)初始化
- 所有參數(shù)必須初始化;
- 且初始值不能設(shè)置成一樣,比如都設(shè)置為0或者1;
- 初始值設(shè)置為一樣的話,更新后所有的參數(shù)都會相等;
- 所有神經(jīng)元的功能相同;
- 會造成高度冗余;
- 參數(shù)必須隨機(jī)初始化;
- 如果網(wǎng)絡(luò)沒有隱藏層,所有參數(shù)可初始化為0;
- 該網(wǎng)絡(luò)也就不能構(gòu)成深度神經(jīng)網(wǎng)絡(luò)了
標(biāo)準(zhǔn)化(Normalizaiton)
- 進(jìn)行分類器或模型的建立與訓(xùn)練時;
- 輸入數(shù)據(jù)的值范圍可能較大;
- 樣本中各數(shù)據(jù)量綱可能不一致;
- 這樣的數(shù)據(jù)影響模型的訓(xùn)練或者構(gòu)建;
- 對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理是必要的;
- 去除數(shù)據(jù)的單位限制;
- 轉(zhuǎn)化為無量綱的純數(shù)值;
- 便于不同單位或量級的指標(biāo)進(jìn)行比較和加權(quán);
- 最典型的為數(shù)據(jù)的歸一化處理;
- 將數(shù)據(jù)統(tǒng)一映射到[0.1]區(qū)間上
z-score標(biāo)準(zhǔn)化
- 零均值歸一化zero-mean normalizaiton
- 經(jīng)處理后的數(shù)據(jù)均值為0,標(biāo)準(zhǔn)差為1(正態(tài)分布)
- 為樣本均值,為樣本標(biāo)準(zhǔn)差
損失函數(shù)
- 用于描述模型預(yù)測值與真實(shí)值的差距大小
- 有兩種常見的算法:
- 均值平方差:MSE
- 交叉熵:cross entropy
均值平方差
- Mean Squared Error,MSE,也稱均方誤差
交叉熵
- cross entropy?
- loss算法的一種;
- 一般用于分類問題;
- 意義是預(yù)測輸入的樣本屬于哪一類的概率;
- 值越小,代表預(yù)測結(jié)果越準(zhǔn)確;
- y代表真實(shí)值分類(0或1),a代表預(yù)測值;
損失函數(shù)的選擇
- 取決于輸入標(biāo)簽數(shù)據(jù)的類型;
- 輸入為實(shí)數(shù)\無界的值,損失函數(shù)選擇MSE
- 輸入標(biāo)簽為位矢量(分類標(biāo)志),損失函數(shù)選擇交叉熵;
梯度下降法
- 梯度;
- 指函數(shù)關(guān)于變量x的導(dǎo)數(shù);
- 方向表示函數(shù)值增大的方向;
- 模表示函數(shù)值增大的速率;
- 不斷將參數(shù)的值向梯度的反向更新一定的大小;
- 能夠得到函數(shù)的最小值(全局最小或者局部最小)
- 利用梯度更新參數(shù)時,
- 將梯度乘以一個小于1的學(xué)習(xí)速率(learning rate);
- 因?yàn)橥荻鹊哪]^大;
- 直接利用其更新參數(shù)會使函數(shù)值波動較大;
- 很難收斂到一個平衡點(diǎn);
- 學(xué)習(xí)率learning rate不宜過大
- :正確結(jié)果與節(jié)點(diǎn)輸出結(jié)果的差值,即誤差;
- :節(jié)點(diǎn)激活函數(shù),輸入該節(jié)點(diǎn)的鏈路做信號與權(quán)重乘積后的加合;
- 加合結(jié)果給到激活函數(shù)計(jì)算;
- :鏈路前端節(jié)點(diǎn)輸出的信號值。
學(xué)習(xí)率
- 一個重要的超參數(shù);
- 控制基于損失梯度調(diào)整網(wǎng)絡(luò)權(quán)值的速度
- 學(xué)習(xí)率越小,沿著損失梯度下降的越慢;
- 從長遠(yuǎn)看,小的學(xué)習(xí)率的效果還不錯;
- 可以避免錯過任何局部最優(yōu)解;
- 但是也意味著要花費(fèi)更多的時間來收斂;
- 尤其是當(dāng)處于曲線的局部最高點(diǎn)時;
新權(quán)值=當(dāng)前權(quán)值-學(xué)習(xí)率梯度
泛化能力分類
- 欠擬合:
- 擬合
- 過擬合
- 不收斂
欠擬合
- 模型未能很好的表現(xiàn)數(shù)據(jù)的結(jié)構(gòu);
- 擬合程度不高;
- 模型不能在訓(xùn)練集上獲得足夠低的誤差;
擬合
- 測試誤差與訓(xùn)練誤差差距較小;
過擬合
- 模型過分的擬合訓(xùn)練樣本;
- 對測試樣本預(yù)測準(zhǔn)確率不高;
- 模型泛化能力較差;
- 訓(xùn)練誤差和測試誤差差距較大;
不收斂
- 模型不是根據(jù)訓(xùn)練集訓(xùn)練得到
過擬合詳細(xì)描述
- 給定一堆帶有噪聲的數(shù)據(jù),
- 利用模型擬合該組數(shù)據(jù);
- 可能把噪聲數(shù)據(jù)也給擬合了;
- 過擬合的模型:
- 一方面會造成模型比較復(fù)雜;
- 另一方面,模型的泛化能力太差
過擬合出現(xiàn)的原因
- 錯誤的選擇樣本的方法\樣本標(biāo)簽\或者樣本數(shù)量太少;
- 樣本數(shù)據(jù)不足以代表預(yù)定的分類規(guī)則;
- 樣本噪音干擾過大,模型將部分噪音認(rèn)為是特征,擾亂了預(yù)設(shè)的分類規(guī)則;
- 假設(shè)的模型無法合理存在,或者說無法達(dá)到假設(shè)成立的條件;
- 參數(shù)太多導(dǎo)致模型復(fù)雜度過高;
- 對神經(jīng)網(wǎng)絡(luò)模型
- 樣本數(shù)據(jù)存在分類決策面不唯一;
- 隨著學(xué)習(xí)的進(jìn)行,BP算法使權(quán)值收斂過于復(fù)雜的決策面;
- 權(quán)值學(xué)習(xí)迭代次數(shù)足夠多;
- 擬合了訓(xùn)練數(shù)據(jù)中的噪聲和訓(xùn)練樣例中沒有代表性的特征;
過擬合的解決方法
- 減少特征:刪除與目標(biāo)不相關(guān)的特征,更改特征選擇方法;
- Early stopping;
- 更多的訓(xùn)練樣本;
- 重新清洗數(shù)據(jù);
- Dropout;
Early Stopping
- 每一個Epoch結(jié)束時;
- 計(jì)算Validation data 的accuracy;
- 當(dāng)accuracy不再提高時,停止訓(xùn)練;
- 一個重點(diǎn)是如何確認(rèn)validation accuracy 不再提高;
- 不是validation accuracy一降下來便認(rèn)為不再提高;
- 經(jīng)過該Epoch后,accuracy降低,隨后的Epoch又讓accuracy上去;
- 不能根據(jù)幾次的連續(xù)降低就判斷accuracy不再提高;
- 一般的做法
- 訓(xùn)練過程中記錄到目前為止最好的validation accuracy;
- 連續(xù)10次Epoch或者更多,沒有達(dá)到最佳a(bǔ)ccuracy時;
- 認(rèn)為accuracy不在提高;
- 此時可以停止迭代(Early Stopping)
- 該策略也成為“No-improvement-in-n”,n即為Epoch的次數(shù);
- 根據(jù)實(shí)際情況n可取為10,20,30
Dropout
- 通過修改神經(jīng)網(wǎng)絡(luò)本身的結(jié)構(gòu)來實(shí)現(xiàn)
- 訓(xùn)練開始,隨機(jī)刪除一些(比例可能為1/2,1/3,1/4)隱藏層神經(jīng)元
- 認(rèn)為這些神經(jīng)元不存在,
- 同時保持輸入層與輸出層神經(jīng)元的個數(shù)不變;
- 按照BP學(xué)習(xí)算法對ANN中的參數(shù)進(jìn)行學(xué)習(xí)更新;
- 虛線連接的單元不更新,認(rèn)為這些神經(jīng)元被刪除;
- 一次迭代更新便完成;
- 下一次迭代中,同樣隨機(jī)刪除一些神經(jīng)元;
- 與上次不一樣,做隨機(jī)選擇,直到訓(xùn)練結(jié)束;
Dropout減少過擬合的原理
- ?隨機(jī)選擇忽略隱藏層節(jié)點(diǎn);
- 每個批次訓(xùn)練過程中,每次隨機(jī)忽略的隱藏層節(jié)點(diǎn)都不同;
- 這樣的結(jié)果使得每次訓(xùn)練的網(wǎng)絡(luò)都不一樣;
- 每次訓(xùn)練都可以當(dāng)做一個新模型;
- 隱含節(jié)點(diǎn)都以一定概率隨機(jī)出現(xiàn);
- 不能保證每兩個隱含節(jié)點(diǎn)每次同時出現(xiàn);
- 權(quán)值更新不再以來固定關(guān)系隱含節(jié)點(diǎn)的共同作用;
- 阻止了某些特征僅僅在其他特定特征下才有效的情況;
- 非常有效的神經(jīng)網(wǎng)絡(luò)模型平均方法;
- 通過訓(xùn)練大量不同的網(wǎng)絡(luò),平均預(yù)測概率;
- 不同的模型在不同的訓(xùn)練集上訓(xùn)練(每個Epoch的訓(xùn)練數(shù)據(jù)都是隨機(jī)選擇)
- 最后在每個模型用相同的權(quán)重來融合;
Dropout特點(diǎn)
- 經(jīng)過交叉驗(yàn)證,隱藏節(jié)點(diǎn)Dropout率為0.5的時候效果最好
- Dropout也可用作一種添加噪聲的方法;
- 直接對input進(jìn)行操作,輸入層設(shè)為更接近1的數(shù),使得輸入變化不會太大(0.8)
- 缺點(diǎn)在訓(xùn)練時間是沒有Dropout的網(wǎng)絡(luò)的2-3倍;
BP算法思想
- 將訓(xùn)練集數(shù)據(jù)輸入到神經(jīng)網(wǎng)絡(luò)輸入層
- 經(jīng)過隱藏層,最后達(dá)到輸出層,并給出結(jié)果;
- 該過程為前向傳播過程;
- 由于輸出結(jié)果與實(shí)際結(jié)果存在誤差;
- 計(jì)算估計(jì)值與實(shí)際值之間的誤差;
- 將該誤差從輸出層向隱藏層傳播
- 直到傳播到輸入層;
- 反向傳播的過程中,根據(jù)誤差調(diào)整各參數(shù)的值(相連神經(jīng)元的權(quán)重)
- 使得損失函數(shù)減??;
- 迭代上述步驟,直到滿足停止條件;
神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程實(shí)例
- 第一層為輸入層,包含兩個神經(jīng)元:i1,i2和偏置b1;
- 第二層是隱藏層,包含兩個神經(jīng)元:h1,h2和偏置b2;
- 第三層是輸出層:o1和o2;
- 每條線上標(biāo)注的wi是層與層之間連接的權(quán)重;
- 激活函數(shù)是sigmoid函數(shù);
- 用z表示某神經(jīng)元的加權(quán)輸入和;
- 用a表示某神經(jīng)元的輸出;
- 為學(xué)習(xí)率,取0.5;
隱藏層計(jì)算
輸出層計(jì)算
損失函數(shù)計(jì)算
輸出層--->隱藏層計(jì)算
隱藏層--->輸入層計(jì)算
step1 前向傳播
- 輸入層--->隱藏層
- 隱藏層--->輸出層
- 到此,前向傳播過程結(jié)束;
- 得到的輸出值為【0.26894142136,0.26894142136】
- 與實(shí)際值【0.04,0.89】相差甚遠(yuǎn)
step2 反向傳播
- 計(jì)算損失函數(shù)
- 輸出層--->隱藏層權(quán)值更新
- 隱藏層--->輸入層權(quán)值更新
?
文章來源:http://www.zghlxwxcb.cn/news/detail-835067.html
- 到此,反向傳播算法完成
- 最后把更新的權(quán)值重新計(jì)算,反復(fù)迭代
Keras簡介
- Keras由純Python編寫;
- 基于theano/tensorfolw的深度學(xué)習(xí)框架;
- 是一個高層神經(jīng)網(wǎng)絡(luò)API;
- 支持快速實(shí)驗(yàn),將idea迅速轉(zhuǎn)化為結(jié)果;
Keras 適用場景
- 簡易和快速的原型設(shè)計(jì);
- 具有高度模塊化,極簡和可擴(kuò)充性;
- 支持CNN和RNN,或二者的結(jié)合;
- 無縫CPU和GPU切換;
Softmax
- 多用于分類過程;
- 將多個神經(jīng)元的輸出映射到【0,1】區(qū)間內(nèi);
- 可看成概率來理解,從而進(jìn)行多分類;
- 一個數(shù)組V;
- 表示V中的第i個元素;
- 該元素的softmax值為:
文章來源地址http://www.zghlxwxcb.cn/news/detail-835067.html
到了這里,關(guān)于計(jì)算機(jī)視覺基礎(chǔ)知識(十三)--推理和訓(xùn)練的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!