1. 程式人生 > >機器學習和神經網路學習中的一些體會

機器學習和神經網路學習中的一些體會

隨著AI的快速崛起,學習AI的人越來越多,但發現好多人貌似學習了好久,但還是不太明白自己在學習什麼,感覺AI很厲害但不知道究竟是在幹些什麼?

我們總結AI的本質,其實主要就是兩大方面:一:我們首先要有一個目標函式,如:以均方差定義的目標函式(所謂的目標函式雖然衡量的標準表示式有很多,但其主要作用就是用來衡量預測值與真實值之間的差距,一般都是目標函式值越小越好)。

二:在不同的 學習模型中有不同的引數,我們可以這樣來理解:假如給你一個函式,函式裡面主要包含因變數和自變數,那麼對於機器學習和神經網路來說因變數就是我們的預測結果(一般用y'來表示),那麼自變數是什麼?自變數就是各個模型中的引數,比如在神經網路中我們的引數主要引數就是w(權重)和b(偏置),我們訓練神經網路的實質就是訓練w和b,使得當w和b取某一對值得時候可以保證我們定義得目標函式的值最小。至於訓練方法我們就以一般常用的反向梯度傳遞演算法為例。

所謂的梯度就是函式沿某一方向變化最快的方向(一般是函式增加的方向),那麼就很容易理解反向梯度下降就是函式值減小最快的方向,我們希望我們的目標函式取得最小值(在給定的 可取得範圍內),那麼我們沿著目標函式下降最快的方向,自然就能更快速的求得目標函式的最小值。

在這裡我們在對梯度下降演算法中的三種不同型別進行簡單的介紹:1.隨機梯度下降:每次訓練之用一個數據,訓練過後對w和b進行更新,這種方法的隨機性太大,有點是訓練速度塊。2.mini batch(批量梯度下降)假若我們現在有100個數據,我們沒訓練10個數據對w和b進行一次更新,優點:速度較塊,相對於下面要提到的第3種方法而言,準確度相對較高,一般我們使用的都是這種方法,因為它在速度和準確性方面都達到一個相對較好的效果。3.完全隨機梯度下降(名字記得不一定準確),假若我們有100個數據那麼我們就每訓練完100個數據更新一次,有點:充分考慮到了所有的資料,優化方向的指導性更可靠,缺點:訓練速度慢,我們在這裡只是以100個數據為例,可能有人會覺得100個數據也很快啊,但我們如果訓練資料達到100000呢,甚至更多呢?