30行python代碼實現(xiàn)最簡單的神經(jīng)網(wǎng)絡(luò)

這篇文章算是看了吳恩達老師的deeplearning視頻的課后筆記吧,感謝吳恩達老師致力于機器學(xué)習(xí)、深度學(xué)習(xí)的普及。coursera中可以搜到相關(guān)課程,講的真的非常簡單易懂,并且老師對于AI所抱有的那份熱情真的感染到我,希望有一日也可以在人工智能的領(lǐng)域作出一點貢獻。

第一周的視頻中提到了用sigmoid函數(shù)\frac{1}{1+e^-z } 作為最簡單的神經(jīng)網(wǎng)絡(luò)解釋前向傳播和反向傳播的過程。

網(wǎng)絡(luò)設(shè)計如下


圖來自網(wǎng)易云課堂吳恩達深度學(xué)習(xí)p p t

現(xiàn)在我們給定一組數(shù)據(jù)(3,6,9)分別表示(x1,x2,b)輸入網(wǎng)絡(luò),的到隱藏層z=3x1+6x2+9,把他帶入sigmoid函數(shù)的到a=\frac{1}{1+e^-3x1-6x2-9 } ,最后求出損失值L(a,y)。然后利用鏈式求導(dǎo)法則求w1,w2關(guān)于L的偏導(dǎo)數(shù)并且利用梯度下降法收斂函數(shù)。

上面都是吳恩達老師課程里提到的,一種由簡入深讓人醍醐灌頂。從最簡單的入手,既然明白了運作原理那就必須趕快寫一個例子實現(xiàn)一下。

于是我用上述的模型選取了一組數(shù)據(jù)看看一效果。

代碼如下:


python實現(xiàn)

選取學(xué)習(xí)率為0.01,數(shù)據(jù)(3,6,1),初始權(quán)重(0,0,0)

運行結(jié)果:


運行結(jié)果

可以看到隨著迭代次數(shù)的增加損失越來越小了,最后返回的w1,w2,b分為為3,6,0 帶入原式中的到最后的結(jié)果(更新,沒注意輸出的變成了x1,x2,更新一次w1,w2)



很好的擬合了測試數(shù)據(jù)

小結(jié):這里網(wǎng)絡(luò)結(jié)構(gòu)很簡答而且也只用了一組數(shù)據(jù),真是的情況當(dāng)然更復(fù)雜。不過這種最簡單的形式真的很能幫助人理解神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)運行原理。最后安利一下吳恩達老師的人工智能相關(guān)課程(想要入門機器學(xué)習(xí)或者深度學(xué)習(xí)又不知道怎么辦就看這個?。?/p>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容