日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

李宏毅机器学习(一)基本概念介绍

發布時間:2024/7/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 李宏毅机器学习(一)基本概念介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習內容

這是第二次看機器學習的內容,所以這里主要記錄的是讓我印象深刻的知識點;
但是有兩個問題:

  • 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;

這里,我們的x特征就是七天的觀測量,最終得到隔天的觀測人數。 這是得到的特征的權重。 ### Linear Curves 簡單的y = b + kx是解決不了問題的; #### 1. Piecewise Linear Curve 我們要表示紅色的直線,那么很顯然使用簡單的直線的是不行的,那么我們可以使用① + ② + ③得到紅色的曲線; #### 2. Beyond Piecewise Linear? 那么問題來了,如何表示曲線呢? 曲線就是直線的無限接近,所以我們可以無限將曲線劃分即可;

3. sigmoid的由來與應用

sigmoid就是一個可以表示各個函數的框架!

3.1 sigmoid的由來

我們通過c、b和w來定義出這個曲線,從而模擬藍色的function;
我們可以將e取消,那么就是

而上面的藍色function就是hard sigmoid! 我們可以通過改變w、b和c來獲得不同的曲線。
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

在訓練集上更好,但是在測試集上效果反而差了,這就叫做過擬合!

總結

以上是生活随笔為你收集整理的李宏毅机器学习(一)基本概念介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。