李宏毅深度学习基础
一句話:
神經網絡基本形式是線性加權與非線性變換,即y=h(b+w1x1+w2x2)。
線性加權即b+w1x1+w2x2
非線性變換:h()是激活函數
文章目錄
- 回歸定義和應用例子
- 回歸定義
- 應用舉例
- 模型步驟
- Step 1:模型假設 - 線性模型
- 一元線性模型(單個特征)
- 多元線性模型(多個特征)
- Step 2:模型評估 - 損失函數
- 如何判斷眾多模型的好壞(損失函數)
- Step 3:最佳模型 - 梯度下降
- 如何篩選最優的模型(參數w,b)
- 梯度下降推演最優模型的過程
- 梯度下降算法在現實世界中面臨的挑戰
- w和b偏微分的計算方法
- 如何驗證訓練好的模型的好壞
- 更強大復雜的模型:1元N次線性模型
- 過擬合問題出現
- 步驟優化
- Step1優化:2個input的四個線性模型是合并到一個線性模型中
- Step2優化:如果希望模型更強大表現更好(更多參數,更多input)
- Step3優化:加入正則化
- 總結
回歸定義和應用例子
回歸定義
Regression 就是找到一個函數 functionfunctionfunction ,通過輸入特征 xxx,輸出一個數值 。
應用舉例
- 股市預測(Stock market forecast)
- 輸入:過去10年股票的變動、新聞咨詢、公司并購咨詢等
- 輸出:預測股市明天的平均值
模型步驟
- step1:模型假設,選擇模型框架(線性模型)
- step2:模型評估,如何判斷眾多模型的好壞(損失函數)
- step3:模型優化,如何篩選最優的模型(梯度下降)
Step 1:模型假設 - 線性模型
一元線性模型(單個特征)
線性模型假設 y=b+w?xcpy = b + w·x_{cp}y=b+w?xcp?
多元線性模型(多個特征)
所以我們假設 線性模型 Linear model:y=b+∑wixiy = b + \sum w_ix_iy=b+∑wi?xi?
- xix_ixi?:就是各種特征(fetrure) xcp,xhp,xw,xh,???x_{cp},x_{hp},x_w,x_h,···xcp?,xhp?,xw?,xh?,???
- wiw_iwi?:各個特征的權重 wcp,whp,ww,wh,??w_{cp},w_{hp},w_w,w_h,··wcp?,whp?,ww?,wh?,??
- bbb:偏移量
Step 2:模型評估 - 損失函數
如何判斷眾多模型的好壞(損失函數)
有了這些真實的數據,那我們怎么衡量模型的好壞呢?從數學的角度來講,我們使用距離。求【進化后的CP值】與【模型預測的CP值】差,來判定模型的好壞。也就是使用損失函數(Loss function) 來衡量模型的好壞,統計10組原始數據 (y^n?f(xcpn))2\left ( \hat{y}^n - f(x_{cp}^n) \right )^2(y^?n?f(xcpn?))2 的和,和越小模型越好。
L(f)=∑n=110(y^n?f(xcpn))2,將【f(x)=y】,【y=b+w?xcp】代入=∑n=110(y^n?(b+w?xcp))2\begin{aligned} L(f) & = \sum_{n=1}^{10}\left ( \hat{y}^n - f(x_{cp}^n) \right )^2,將【f(x) = y】, 【y= b + w·x_{cp}】代入 \\ & = \sum_{n=1}^{10}\left ( \hat{y}^n - (b + w·x_{cp}) \right )^2\\ \end{aligned} L(f)?=n=1∑10?(y^?n?f(xcpn?))2,將【f(x)=y】,【y=b+w?xcp?】代入=n=1∑10?(y^?n?(b+w?xcp?))2?
Step 3:最佳模型 - 梯度下降
如何篩選最優的模型(參數w,b)
- 步驟1:隨機選取一個 w0w^0w0
- 步驟2:計算微分,也就是當前的斜率,根據斜率來判定移動的方向
- 大于0向右移動(增加www)
- 小于0向左移動(減少www)
- 步驟3:根據學習率移動
- 重復步驟2和步驟3,直到找到最低點
梯度下降推演最優模型的過程
梯度下降算法在現實世界中面臨的挑戰
- 問題1:具備最優(Stuck at local minima)而非全局最優
- 問題2:Stuck at saddle point
- 問題3:趨近于0(Very slow at the plateau)
注:
在非線性模型中會遇到 問題2 和 問題3 ,需要調整迭代次數與學習率(超參數)
在線性模型里面都是一個碗的形狀(山谷形狀),梯度下降基本上都能找到最優點
w和b偏微分的計算方法
如何驗證訓練好的模型的好壞
使用訓練集和測試集的平均誤差來驗證模型的好壞
我們使用將10組原始數據,訓練集求得平均誤差為31.9
然后再使用10組Pokemons測試模型,測試集求得平均誤差為35.0 如圖所示:
更強大復雜的模型:1元N次線性模型
在模型上,我們還可以進一部優化,選擇更復雜的模型,使用1元2次方程舉例,如圖17,發現訓練集求得平均誤差為15.4,測試集的平均誤差為18.4
過擬合問題出現
在訓練集上面表現更為優秀的模型,為什么在測試集上效果反而變差了?這就是模型在訓練集上過擬合的問題。
將錯誤率結果圖形化展示,發現3次方以上的模型,已經出現了過擬合的現象:
步驟優化
Step1優化:2個input的四個線性模型是合并到一個線性模型中
Step2優化:如果希望模型更強大表現更好(更多參數,更多input)
更多input,數據量沒有明顯增加,仍舊可能導致overfitting
Step3優化:加入正則化
更多特征,但是權重 www 可能會使某些特征權值過高,仍舊導致overfitting,所以加入正則化
- www 越小,表示 functionfunctionfunction 較平滑的, functionfunctionfunction輸出值與輸入值相差不大
- 在很多應用場景中,并不是 www 越小模型越平滑越好,但是經驗值告訴我們 www 越小大部分情況下都是好的。
- bbb 的值接近于0 ,對曲線平滑是沒有影響
總結
一句話:神經網絡基本形式是線性加權與非線性變換,即y=h(b+w1x1+w2x2)。
線性加權即b+w1x1+w2x2
非線性變換:h()是激活函數
總結
- 上一篇: Java多线程Zip压缩
- 下一篇: 2020李宏毅深度学习hw1