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