1. 程式人生 > >機器學習第5周!

機器學習第5周!

教輔說這周的作業是史上最難,果不其然,我花了好久好久才完成….好吧其實也沒有很難,就一開始的cost function卡了很久,後面倒是挺順利的,簡單地調了幾遍就過了,現在第五週完成了,還有1個小時第六週就過期了。。。路漫漫,是真的。

1. cost function

印象中,一開始就是要算這個東西,然後我調了好久的程式,又是重看視訊,又是看各種文件、論壇,後來是完成了的,它具體是個什麼樣子我還是要去查一下筆記的。

機器學習的本質在於通過大量資料的訓練,使計算機能夠擁有人類的某種能力,比如識別數字、開車,正如人類有認知錯誤一樣,計算機學習以後的識別也會有些偏差。比如讓它識別10個數字,它可能對了9個,錯了一個,我們希望它識別100個數字的時候也只錯一個,這就是識別的優化。cost function就是那些造成偏差東西,而我們要減少偏差,就是要最小化這個cost function,這是從第一週就開始的機器學習基本思想。

上面介紹了cost function的本質,具體怎麼構成這個方程可能涉及了很多高深推理,Ng教授也只是給了方法,他承認很多機器學習的工作者知道的也不多,會用這些方法,會用fminunc函式就賺了很多錢,我這裡就回顧一下教授教的方法吧。

J(θ)=1mi=1mk=1K[y(i)klog((hθ(x(i)))k)(1y(i)k)log(1(hθ(x(i)))k)]

呼…這個公式很長,但由於它是在之前線性迴歸方法的cost之上進一步發展出來的,所以理解上去不是很難。原來的cost function是這樣的:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))(
1y(i))log(1(hθ(x(i))))]

出現不同的原因在於,之前要實現的功能,比如預測房價,只需要輸出一個數字(表示價格)即可,而現在不一樣,之前的文章也提過,輸出的是該影象屬於10中不同種類的概率,所以偏差需要把這10個種類對應的偏差都加起來。

2. Backpropagation

上一週用於識別的方法是層層計算,得出的概率找最大的,最大值的索引就是所在分類,比如向量v中第4個分量最大,那麼可以得出結論v對應的影象上是數字4. 這周介紹了一個新的方法叫做backpropagation, 工作原理是這樣的:取一組訓練集合(就是一張畫素資料存在 x(i) 中的圖片和它顯示的數字 y

(i)), 正方向按照上一週的方式算過去,再反過來計算 δΔ 的值,依據他們倆來得出梯度,用函式fminunc多次迭代….

就一種方法而已,怎麼算的wiki裡都有,我程式碼也通過了,我就不介紹了,今天洗洗睡了。