做者:知乎用戶
連接:https://www.zhihu.com/question/29271217/answer/44147568
來源:知乎
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
算法
我以爲機器學習(仍是僅指有監督學習)在本質上實際上是根據樣本數據進行函數擬合的過程。這個過程分爲兩個步驟,首先是肯定要擬合函數所屬的家族,究竟是線性的呢?仍是非線性的呢?函數式大概是什麼樣子的呢?這就是咱們所說的函數的假設空間,不一樣的假設空間定義了該函數族不一樣的函數形態。而這些不一樣的假設空間構成了不一樣的機器學習算法的類型。所以,第一步選擇假設空間的過程就是選擇機器學習算法類別的過程。這個過程可能須要根據研究員的經驗,以及數據的分佈狀況進行決策。機器學習
可是選擇好了假設空間並不意味着咱們的工做已經完成了,由於假設空間中有無窮多個該類型的函數,舉個簡單的例子,對於指數函數來講,F(x) = a^x,只要咱們的參數a稍微變更一下就獲得了一個不同的函數。那麼接下來就是肯定函數參數的過程了,只有函數的參數選擇對了,函數擬合的過程也就完成了,擬合到了這個函數之後,不管咱們是分類仍是迴歸均可以用了。函數
那麼如今機器學習問題就轉換成了怎樣求參數a的問題了。應該怎麼求呢?直接一個個窮舉確定是不行的,由於a的取值是無限的。所以這裏咱們引入了一種衡量咱們選擇a好壞的標準,並用一個函數來計算這個標準。這裏咱們就引入了一個新的函數叫作代價函數,也叫損失函數。這個函數的輸入是參數a,訓練數據x,以及訓練數據的label y(這也就是我一直強調有監督學習的緣由,由於無監督是沒有label值y的),咱們給出損失函數的定義C(a, x, y)。在實際訓練過程當中,對於任意一個a,咱們均可以根據F(x) = a^x算出咱們這個模型所能給出來的值,咱們稱之爲y',可是y'和真實的y之間是有差距的,這個差距就用代價函數C來衡量,C越大意味着預測值與真實值差的越遠,也就是咱們的a值選的越很差。反之C越小,則意味着咱們選的a就越好。今後機器學習問題就轉換爲求C的最小值問題了~~(中國人民的老朋友了),有沒有以爲熟悉了不少呢?求最小值問題應該大一的時候就學過吧?導數等於零,求駐點嘛~~學習
可是,注意我說可是了!!不少時候C的駐點不是那麼好求的,有的是由於C的定義式太複雜,其導數爲零的方程很難求得解析解,有的是由於要求的a太多了,一個個的偏導數太難搞定。所以,有別於一步到位的解法,咱們採用了漸進式解法,也就是梯度降低法,牛頓法,擬牛頓法等。這些方法可使咱們沿着a該變大或者該變小的方向走下去,越走C越小,越走越接近最優的a'(固然能接近多少就不能保證了,有可能陷入局部最優),也就引入了最優化問題。優化
後來啊~~~ 因爲現實問題太複雜,咱們可能不是在全域上隨便走動a,可能有一些針對a能取值的約束,例如實際問題中a就不能小於2,因此即使是a的最優解在原點0處,那麼a也只能取一個大於等於2的值。這就引入了有約束的最優化問題。io