AI代碼到底長什么樣?有美人痣?閑的?圓潤嗎?
虛竹在想念自己夢姑的時候,好歹還有夢境作為記憶碎片。而那些讓人許多AI公司爆火的、融資拿到手軟的AI代碼是不是也如某國公主一般呢?
直到筆者看到這兩張圖:
當(dāng)然以上純屬玩笑,在QUORA上,一位畢業(yè)于印度理工學(xué)院人工智能與計算機科學(xué)專業(yè)、工作于Facebook的工程師Sriraman Madhavan。
寫了這么一個答案:
這是我寫的一個案列:根據(jù)名字來確定你是來自印度哪個地區(qū)的。根據(jù)你名字的不同狀態(tài),可以判定你的家庭人員情況,以下是代碼片段:
下面這個代碼不是我寫的,這是個谷歌根據(jù)圖片生成描述文字的創(chuàng)新。下面是根據(jù)圖片生成描述的案例:
但等等!別高興得太早,就上面這個代碼也引發(fā)了啼笑皆非的笑話。
如果調(diào)教不好,AI可能有點愚蠢。
下面再看一個復(fù)雜的例子:
我們必須記住,AI主要只是一堆數(shù)學(xué)邏輯(尤其是在討論機器學(xué)習(xí)和深度學(xué)習(xí)時)。編碼的作用只是讓計算機去執(zhí)行它,并從數(shù)據(jù)中得以學(xué)習(xí)。我認(rèn)為要知道AI代碼長什么樣,并不是要了解背后代碼的外觀,和如何編寫代碼,而是要更多理解代碼中到底發(fā)生了什么。
比如,我們?nèi)绾蝿?chuàng)建能夠識別MNIST數(shù)據(jù)庫中這些手寫數(shù)字的東西呢?
如下圖,只是一些Python代碼,背后有很多數(shù)學(xué)邏輯。[1]
是不是看完頭皮發(fā)麻?
我自己都覺得很難理解它。
這到底是個什么玩意兒?其實就是數(shù)學(xué)邏輯。
每個手寫數(shù)字由28*28像素組成,那么就共有784個像素。且每個像素都被用作神經(jīng)網(wǎng)絡(luò)的輸入,我們用它來訓(xùn)練網(wǎng)絡(luò)。每個像素都被認(rèn)作為一個輸入,并通過中間隱藏層,也就是下圖中的15個神經(jīng)元。經(jīng)過那里,我們將得到最有可能的數(shù)字估計。
即我們就會得出哪個數(shù)字的激活率最高。這種感覺就如同下圖:[2]
那么我們在執(zhí)行代碼時會發(fā)生什么?我們所建立的網(wǎng)絡(luò)類型稱為前饋神經(jīng)網(wǎng)絡(luò),這意味著所有數(shù)據(jù)都在一個方向上。我們使用反向傳播算法來計算我們當(dāng)前數(shù)據(jù)的誤差,通過更改設(shè)置并在此運行神經(jīng)網(wǎng)絡(luò)。
我們得出這樣的輸出:
從中可以看出,在第一輪中,我們神經(jīng)網(wǎng)絡(luò)能夠正確地對51%的數(shù)字進行分類,通過訓(xùn)練最終正確率能達到81%。相當(dāng)不錯的改進吧?隨機猜測數(shù)字會給你10%的準(zhǔn)確率!精度還可以進一步提高,只需要更多的計算能力。此外,對代碼的更改還可以優(yōu)化學(xué)習(xí)速度。使用普通計算機,你可能就會獲得低于4%的錯誤率,而最佳結(jié)果是錯誤率低于1%。[3]
我們在這里做了什么?
這行代碼中,我們告訴網(wǎng)絡(luò):
1,784個輸入神經(jīng)元;
2,30個隱藏層;
3,10個輸出神經(jīng)元。
其次,我們使用一種隨機梯度下降的方法來訓(xùn)練我們的網(wǎng)絡(luò),并“降低我們的成本”。
(備注:關(guān)于隨機梯度下降法,各位看官請自行搜索。)
-
AI
+關(guān)注
關(guān)注
87文章
31325瀏覽量
269675 -
代碼
+關(guān)注
關(guān)注
30文章
4813瀏覽量
68833
原文標(biāo)題:人工智能代碼到底長什么樣?
文章出處:【微信號:TechSugar,微信公眾號:TechSugar】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論