我很早就對人工智能是很是感興趣的。記得我大學的畢業論文,就是使用遺傳算法解決了一個經典的尋路問題。
我一直對人類經典的思想是很是敬畏和崇拜的,好比傳統的計算機數據結構算法問題,例如經典的排序算法或者動態規劃思想,把一些看似
複雜的問題居然用短短十幾行甚至一個 for 循環就能解決,這令我感覺到了一種美學,也同時對人類的偉大思想而讚歎。
但傳統的計算機算法其實仍是經過,人來編寫代碼,人來經過完整的、解決問題的思路來解決問題。但若是機器能有本身的思想,若是它本身就能「學習」到解決問題的方法,豈不是很是 cool 的一件事。但以我目前的認知來看,如今的人工智能是更像是一種工具,一種「數學工具」,一種「統計學工具」,
它是從大量數據裏總結出了一種「規律」,用來解決實際問題。它離電腦真正有思想還相距甚遠,甚至以目前來看,兩者可能並非一回事。可能讓機器具備思惟,還須要在其餘學科上進行突破好比人的認知機制,腦科學進行突破。哈哈扯遠了。算法
先來介紹本身的一些簡單認識。數據結構
有一類幾何對象,好比直線、平面、立方體,看上去都是有棱有角的,都是「直」的,在數學中稱爲線性機器學習
要處理它們相關的問題就很是簡單。好比在高中就學過,兩根直線能夠用兩個線性方程來表示,想求它們交點的話:函數
聯立出二者的方程組,求出該方程組的解就能夠獲得交點工具
(1)咱們所處的世界、宇宙太複雜了,不少現象都沒法理解,更談不上用數學去描述;學習
(2)有一些符合特定條件的複雜問題,能夠轉化爲簡單的線性問題。線性問題就能夠徹底被理解,徹底能夠被數學所描述人工智能
以我目前的認知來看,機器學習主要的任務有兩類。
第一就是分類任務,好比spa
也就是說,分類的結果是,人爲預先定義的結果範圍裏的一種對象
而第二類任務就是迴歸任務,而它得出的結果是一個連續數字的值,而非類別。
例如排序
這是我目前的淺顯理解。機器學習目前我以爲是一種數學工具。經過餵給機器大量的學習資料,而後機器運行一個機器學習算法,訓練出了一個模型。而後再向機器丟入問題,機器經過這個模型運算得出結果。
好比我收集到了有 x, y 的兩組數據(好比年齡和身高),我想要知道這兩組變量是否有線性關係。那麼我先以一個變量爲 x 軸,另外一個變量爲 y 軸畫出這樣一副散點圖。
那麼我就能夠找出這樣的一條直線。這條直線的特徵是:儘量的離全部離散點最近,也能夠表述成,每一個離散點離直線距離的差值之和最小。
那麼我就能夠很好的根據我算出的這條直線,由已知的 x 值,來預測的未知的 y 值。
假如說 x, y 有線性關係的話,那麼預測的效果仍是很不錯的。因此線性迴歸的主要任務是,找出這條直線。
咱們先從單變量線性迴歸開始理解,即假設 x 只有一個特徵(好比一氧化氮濃度),y 是房價。
根據前文提到的感性理解,咱們的目標就是找到最佳的直線方程:
其實就是求參數 a 和 b 的過程。
那其實咱們的目標就是,使得根據每個 x 點,使得
最小。這個方程叫作損失函數。
你可能想問爲何是差的平方和最小?而不是差的絕對值和最小或者差的 3 或者 4 次方最小?
差的平方和最小在數學中叫作最小二乘法,這裏給出一個連接
aotu.io
或者關注凹凸實驗室公衆號(AOTULabs),不定時推送文章。