在本文中,我們将介紹神經網絡的簡單概念。
首先,我們需要了解什麼是神經網絡。為了做到這一點,我們将從一個現實生活中的問題及其使用神經網絡邏輯的解決方案的例子開始。
例子
假設你在你的房間裡寫代碼,你5歲的弟弟來找你并向你展示他的畫作。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLi0zaHRGcWdUYuVzVa9GczoVdG1mWfVGc5RHLwkzX39GZhh2csATMflHLwEzX4xSZz91ZsADMx8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL2EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3PnVGcq5iNjNGZ1MzN1UWMlVGMyQGN5ATMlVTY0QzNzEmY4ITZi9CXzIzLcZDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.jpeg)
那是什麼呀?
特征
你能做的就是提出一個假設“這是一隻貓”。您可以記下您看到的生物的所有特征。所有這些特征都應該影響假設,這是合乎邏輯的,對吧?
權重
那麼你又要問問自己,所有這些特征同樣重要嗎?事實上,如果這隻貓失去一隻眼睛,它仍然是一隻貓。然而有翅膀的生物一般都是會飛翔的,是以肯定不是貓。是以,我們的下一個目标是确定每個特征在做出最終決策時的重要性,以及它們是否會增加或減少機率。
Y = 0.83×(-0.87)+ 0.95×0.42 + 0.66×0.69 + 0.72×(-0.64)+ 0.5×0.35 = -0.1535
激活函數
請注意,我們寫的是0.83而不是83%,但值是相同的。我們還添加了正面特征并減去負面特征乘以它們的權重。我們可以看到輸出為負數,是以我們可以得出結論,這可能不是貓,但我們必須做的最後一件事,可能存在一種情況,我們有很多特征并且輸出分數非常大的情況。我們希望資料的格式限制在某個區間,例如<0,1>。我們可以将其視為0-100%之間的機率。我們為什麼需要這個?首先,假設我們想要根據有貓的事實預測不同的東西,那麼我們函數的輸出将成為其他分類中的一個特征,是以它必須與所有其他特征在同一範圍内。
我們應該使用什麼函數來規範化輸出?那麼有很多可供選擇,但現在我們使用sigmoid函數。
它傳回<0,1>範圍内的輸出,是以我們可以将輸出視為0-100%之間的機率。現在我們可以用這種格式編寫公式:
Y = sigmoid(0.83×( - 0.87)+ 0.95×0.42 + 0.66×0.69 + 0.72×( - 0.64)+ 0.5×0.35)
神經元
恭喜你,你有一個神經元!
那麼神經元是做什麼的呢?
- 它把輸入值乘以它們的權重,
- 然後将它們相加起來,
- 之後,它将激活函數應用于求和。
神經元是如何學習的?
神經元的目标是根據大量輸入和輸出示例調整權重。是以,假設我們向神經元展示了一千個貓的圖檔和非貓圖檔的示例,并且我們展示了每個示例中我們展示了哪些特征以及我們确信它們在這裡的确定程度。基于上千張圖像神經元決定:
- 哪些特征是重要的和正面的(例如每隻貓的都有一條尾巴,是以權重必須大而且是正的),
- 哪些特征并不重要(例如,隻有少數圖檔有2隻眼睛,是以權重很小),
- 哪些特征是重要的和負面的(例如每個包含角的圖檔實際上是一隻獨角獸而不是貓的圖檔,是以權重必須大而且是負的)。
神經網絡
正如我們之前所說,我們的神經元可以是其他一些神經元的輸入。我們神經元的輸入也可以是其他神經元的輸出。
例如,我們想要基于照片的像素來預測是否存在諸如角,腿等的特征,然後基于它是貓的圖檔這一事實我們想要預測孩子喜歡什麼類型的動物。
為此,激活函數特别有用,因為現在我們已經規範化了所有神經元的輸出,是以它們可以作為網絡下一層的輸入。
請注意,通常每個神經元的輸出不會連接配接到下一層的單個神經元,而是連接配接到很多神經元。這是因為神經元預測的資訊對許多其他神經元有用,為什麼我們不想使用它呢?
Black box
在這個例子中,我們展示了神經元決定圖像是否包含基于特定特征的貓。在現實生活中,我們通常不知道哪些特征用于預測最終輸出。在我們的例子中,我們說過這不是一隻基于角等特征的貓。但在現實生活中,神經網絡可以選擇某些位置的像素等特征,并通過許多我們不知道的分類處理它們,并根據預測最終輸出的分類。這被稱為Blackbox方法,因為我們隻看到輸入和輸出而不是中間完成的所有計算。是以,輸入和輸出層之間的層稱為隐藏層。