李宏毅机器学习(一)基本概念介绍
學(xué)習(xí)內(nèi)容
這是第二次看機(jī)器學(xué)習(xí)的內(nèi)容,所以這里主要記錄的是讓我印象深刻的知識(shí)點(diǎn);
但是有兩個(gè)問題:
- deep? 為什么不是越深越好?
- fat? 為什么要套娃,我們只需要將多個(gè)sigmoid并排不就好了嗎? 因?yàn)槲倚枰木褪莥 = constant + sum(藍(lán)線)
深度學(xué)習(xí)的類別
輸入可以是當(dāng)前的特征; 各種條件;
- 回歸: 函數(shù)輸出一個(gè)標(biāo)量;
- 分類:給出一堆類別,函數(shù)需要根據(jù)某個(gè)物體的所有特征輸出它屬于的一個(gè)標(biāo)簽;
比如垃圾郵件; 阿爾法go - Structured learning: 學(xué)會(huì)創(chuàng)造某些東西(image、document)
1. Function with Unknown Parameters
后面我們會(huì)以這個(gè)例子作為示例;
比如某個(gè)頻道的Youtube流量; 而該流量是由前面所有的流量決定的;
Function = Model
feature = 表示我們已經(jīng)知道的東西(在這里指的是前面有的每天的觀看人數(shù));
weight = w
2. Define Loss from Training Data
就是我們給出參數(shù)后,查看這些參數(shù)的效果是不是好!
也就是看真實(shí)值和估值的差距;
3.Optimization
問題1: 為什么學(xué)習(xí)率在訓(xùn)練的時(shí)候要調(diào)整?
- 因?yàn)閯傞_始時(shí)一般遠(yuǎn)離最優(yōu)點(diǎn),所以剛開始的時(shí)候我們要選擇較大的學(xué)習(xí)率,后面再調(diào)整學(xué)習(xí)率,所以會(huì)有隨著epoch值改變的動(dòng)態(tài)學(xué)習(xí)率;
問題2:為什么loss有些時(shí)候是負(fù)的?
- 因?yàn)槟阈甭室欢ǖ臅r(shí)候,跨度大了,必然會(huì)有負(fù)的;
問題3: 學(xué)習(xí)率是啥?
就是梯度前面的東西;
問題4: 兩個(gè)參數(shù)怎么更新呢?
梯度是可以幫助你自動(dòng)計(jì)算的;問題5: sigmoid為什么是三個(gè)?
一般而言,sigmoid的個(gè)數(shù)越多,那么效果就會(huì)越好;
一個(gè)sigmoid表示的就是一個(gè)藍(lán)色折線,那么多個(gè)sigmoid就會(huì)使得無限接近于原來的數(shù)值(beyond precise function),也就會(huì)出現(xiàn)過擬合!
問題6:為什么是sigmoid,不能是hard sigmoid?
當(dāng)然可以,只要你能寫出來!
問題7:hyperparameter有哪些?
學(xué)習(xí)率(步長(zhǎng)么)、幾個(gè)sigmoid、batchsize也是;
改進(jìn)函數(shù)第一次(線性化)
函數(shù)的改進(jìn)都源于你對(duì)這個(gè)問題的理解;
比如我們要預(yù)測(cè)觀看學(xué)習(xí)視頻的人數(shù),我們可以把它想想為一個(gè)線性回歸問題,類似于y = b + kx;
其中x表示前一天的觀看人數(shù),而y表示的隔天的觀看人數(shù),b是偏差(這里x不是天數(shù),星期一、星期二等);
但是呢,某一天的觀看人數(shù)不能僅僅是通過前一天來決定,每一天的權(quán)重應(yīng)該是不一樣的,周一到周五權(quán)重應(yīng)該會(huì)更大,而周六和周天權(quán)重會(huì)降低,所以我們做出第一次改進(jìn),ki,i=1…7;但是我們可能認(rèn)為7不夠,應(yīng)該是一個(gè)月,那么i = 1…31;
3. sigmoid的由來與應(yīng)用
sigmoid就是一個(gè)可以表示各個(gè)函數(shù)的框架!
3.1 sigmoid的由來
我們通過c、b和w來定義出這個(gè)曲線,從而模擬藍(lán)色的function;
我們可以將e取消,那么就是
3.2 sigmoid的應(yīng)用
前面已經(jīng)知道了sigmoid可以代表各個(gè)直線或者是曲線,只需要改變中間的w和b即可,所以我們?cè)趺幢硎疚覀兊哪P湍?#xff1f; 那么就是將上面的〇 + ①、②和③用sigmoid來替代;
總結(jié): sigmoid就是一個(gè)可以表示各個(gè)函數(shù)的框架!上圖中$c_{i}$、$b_{i}$、$w_{i}$是選擇性的,它們的不同可以構(gòu)造不同的藍(lán)色的function,那么不同的function疊加起來就可以制造出不同的紅色的curves,就可以制造出不同piecewise linear,各種continuous 的function;改進(jìn)函數(shù)第二次(神經(jīng)網(wǎng)絡(luò))
由于我們上面已經(jīng)得到了多個(gè)特征表示,每天一個(gè)特征表示(也就是觀看的人數(shù)),所以放入sigmoid中,那么就會(huì)得到上圖下面的式子;
特別注意的是,這里的WijW_{ij}Wij?是wi和wj的結(jié)合體,內(nèi)外參數(shù)也就是其實(shí)是兩個(gè)參數(shù),所以才會(huì)有Wij。
全連接網(wǎng)絡(luò)BP
這里我們?nèi): 1,2,3; i:1,2,3; 也就是取前三天、并且設(shè)立三個(gè)sigmoid(三個(gè)函數(shù));
這里的W1jW_{1j}W1j?表示的是第一個(gè)sigmoid函數(shù)里面的三個(gè)特征值的權(quán)重值;
計(jì)算r向量
計(jì)算a向量
y = constant + sum(藍(lán)線)
參數(shù)更新
參數(shù): 注意這里兩個(gè)b是不一樣的,里面的b是一個(gè)向量,外面的b是一個(gè)值;
我們將所有的參數(shù)都列出來concat為一個(gè)向量θ\thetaθ
Loss: 就是預(yù)測(cè)值和gt的誤差;
優(yōu)化器: 和前面的一樣,都是學(xué)習(xí)率 * 梯度來更新參數(shù);
參數(shù)的初始化是不一樣的! 我們初始化得到θ0\theta^{0}θ0,而下標(biāo)表示的是第幾個(gè)參數(shù)。
其中倒三角的意思是梯度向量。
4. Update(SGD(小批量梯度下降))
Update 和 Epoch是不一樣的!
原數(shù)據(jù)庫(kù)為N, 每個(gè)Batch有batch_size的大小,我們的參數(shù)的Update是在經(jīng)歷每次batch后進(jìn)行更新的。而所有的batch都進(jìn)行了一次了就可以稱為是一個(gè)epoch,所以在一個(gè)epoch中有多次Update,共N/batch_size次參數(shù)更新;
激活函數(shù)
激活函數(shù) = 函數(shù)框架
它可以有很多種替代,其中sigmoid只是其中之一; 比如下面的ReLU;
ReLU: 如果 0 > (b + wx1)那么,就輸出0;
兩個(gè)ReLU相加就是一個(gè)hard sigmoid!
改進(jìn)模型第三次(多個(gè)激活函數(shù))
一般而言,sigmoid的個(gè)數(shù)越多,那么效果就會(huì)越好;
一個(gè)sigmoid表示的就是一個(gè)藍(lán)色折線,那么多個(gè)sigmoid就會(huì)使得無限接近于原來的數(shù)值(beyond precise function),也就會(huì)出現(xiàn)過擬合!
改進(jìn)模型第四次(多個(gè)layer)套娃
如上圖所示,我們將上一個(gè)激活函數(shù)后的a當(dāng)作特征再次放入到下一個(gè)激活函數(shù)(增加了新的參數(shù)),那么就叫做加layer
深度學(xué)習(xí)(deep = hidden layer)
激活函數(shù)就是neural network! 但是我們將它命名為layer! deep = hidden layer,就是深度學(xué)習(xí)!
所以才會(huì)有層數(shù)越來越多!網(wǎng)絡(luò)也越來越深! AlexNet、GoogleNet、Residual Network、Taipei等等;
但是深度不是越深越好,不僅會(huì)出現(xiàn)過擬合,也會(huì)出現(xiàn)效果越來越差的情況。
但是有兩個(gè)問題:
為什么不是越深越好?
為什么要套娃,我們只需要將多個(gè)sigmoid并排不就好了嗎?
overfitting
在訓(xùn)練集上更好,但是在測(cè)試集上效果反而差了,這就叫做過擬合!
總結(jié)
以上是生活随笔為你收集整理的李宏毅机器学习(一)基本概念介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openstack实例状态错误_Open
- 下一篇: sort函数_MATLAB--数字图像处