首頁>技術>

一臺簡單的預測機

讓我們先從構建超級簡單的預測機開始。

現在我們帶入場景,你就是一臺計算機,現在“人類”讓你做一件事,你的思維應該是什麼樣子的,是不是應該是:

有問題 ->思考方法->解決問題(答案)

但?這是人類的思維,你應該是計算機,角色錯了。

你的思維不應該是: 輸入值 ->計算值->輸出值

這樣你才像計算機啊,一個無情的機器,不停的計算著出入的值,也不停的輸出計算後的值。

經過上面的思維板證,你現在應該是一個完美的計算機了,接下來,我們試著計算一些資料來驗證這個思維:

3 X 4 = ?

因為你是計算機,你只能用自己“笨拙”的想法去計算“3 * 4”,無非就是 4 + 4 +4,兩者結果是一樣的,但是後者對於你來說,幾乎沒什麼深層的邏輯(不要否定乘法不難,對於計算機來說那是“破天荒”)。

你已經開始神經網路程式設計了……

上面的案列已經解決了一個簡單的問題,感覺神經網路就這?!太簡單了吧,

沒關係,現在我們把難度提高,讓他稍微複雜一些,解決進位制轉換的問題:

將測量距離單位“千米”轉換成“英里”。

這個問題,人類就需要給我們更多的提示(程式)了,因為我沒法進行簡單的相加就可以得到結果;

我們使用以下兩個案例來觀察一下,

千米和英里是什麼關係,因為我們的笨拙,我們只能看到他們存在一定的“線性關係”,因為隨著千米的變大,英里也變大了。

那我們就沿著這條線索走下去,我們假設他們的關係是這樣的:英里=千米×C C為常數。

開始!

C = 0.5 看看會怎麼樣。

很顯然,結果不是我們想要的,因為和預想的結果差了一點,我們預想的結果應該是62.137,但輸出來的結果是50,中間差了62.137 -50 = 12.137。

雖然結果不對,但是我們欣慰的是,結果沒有差很大(絕對地安慰自己)。

我們的第一步獲得一個結果,同時也會獲得一個誤差,這個誤差可以展現出一件事情:我們和真實的結果還有多遠。

C = 0.6 接下來,我們繼續努力,再去試一次:

這一次呢,我們又獲取了一個結果和一個誤差,分別是 60 和 2.137 ,這次我們做個不錯,感覺有希望了,因為誤差從原來的 12.137 到現在的 2.137,小了很多,我們趁著“革命熱情”未退,繼續……

C = 0.7 我們更近一步,把 C 再往上調一下:

結果好像不是很好,因為誤差比上次大了,現在是 -7.863 了,出現了負數,這代表什麼,代表我們超了,有點過頭,我們需要減一下,那我們就減一下吧。

C = 0.61 比第二次多一丟丟,生怕超了,

這次的結果讓我笑開了花,誤差出現了至今的最小值,感覺我們還可以繼續,勝利就在前方,可以告訴你的是,我們的確可以繼續,但是我們就不探討剩下的過程了,無非就是調節引數,不停的接近結果。

無論你是否相信,我們剛剛所做的,就是走馬觀花地瀏覽了一遍神經網路中學習的核心過程。我們訓練機器,使其輸出值越來越接近正確的答案

現在你去想一件事情,為什麼不直接給一個公式,直接套取結果呢,而是在不停的修改引數去接近這個結果,但是我們人類的智慧不也是這樣,一直在不停的修改,從一開始的地球中心說,到宇宙論,從地平說到地圓說,從一個簡簡單單的計算機到聞名世界的打敗人類圍棋高手的AlphaGo(阿爾法狗),一些人將這種方法稱為迭代,意思是持續地、一點一點地改進答案。

總結:

所有有用的計算機系統都有一個輸入和一個輸出,並在輸入和輸出之間進行某種型別的計算。神經網路也是如此。當我們不能精確知道一些事情如何運作時,我們可以嘗試使用模型來估計其運作方式,在模型中,包括了我們可以調整的引數。如果我們不知道如何將千米轉換為英里,那麼我們可以使用線性函式作為模型,並使用可調節的梯度值作為引數。改進這些模型的一種好方法是,基於模型和已知真實示例之間的比較,得到模型偏移的誤差值,調整引數

10
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 只用一行程式碼快速收集H5聊天使用者體驗資料——附贈告警機器人