[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動

栏目: 数据库 · 发布时间: 5年前

内容简介:前一篇介紹 ANN 魔法陣結構:輸入層(Input Layer)、隱藏層(Hidden Layer)及輸出層(Output Layer)。此外,也解釋了神經元與激活函數(activation function)的概念,我們來複習一下激活函數的功用:激活函數用來決定哪些神經元要被激活(可發送訊息出去),例如今天模型的任務是辨識貓跟狗,把帶有貓跟狗標籤的圖片資料集輸入 ANN 後,這時並不是每個神經元都重要,是否重要由激活函數決定,被激活的神經元傳遞下去的訊息代表是對輸出結果所以這樣就可以成功發動 ANN 魔法

前一篇介紹 ANN 魔法陣結構:輸入層(Input Layer)、隱藏層(Hidden Layer)及輸出層(Output Layer)。此外,也解釋了神經元與激活函數(activation function)的概念,我們來複習一下激活函數的功用:

[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動
https://community.alteryx.com/t5/Data-Science-Blog/It-s-a-No-Brainer-An-Introduction-to-Neural-Networks/ba-p/300479

激活函數用來決定哪些神經元要被激活(可發送訊息出去),例如今天模型的任務是辨識貓跟狗,把帶有貓跟狗標籤的圖片資料集輸入 ANN 後,這時並不是每個神經元都重要,是否重要由激活函數決定,被激活的神經元傳遞下去的訊息代表是對輸出結果 有價值的 訊息。

所以這樣就可以成功發動 ANN 魔法陣了嗎?

不,還不夠。記得在本系列第一篇提到的 Deep Learning 吧!

哥布林之覆誦: Deep Learning 是 Machine Learning 的子集, Machine Learning 特色是從資料中學習歸納出規則等等等

那麼,ANN 要如何「 學習(Learning) 」? 怎麼樣才能啟動魔法陣?

[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動
Fate 中的凜

答案是,還需要 Backpropagation

反向傳播(Backpropagation)

還記得你以前是怎麼學習嗎?當你指著貓咪說是小狗,你家人會跟你說:「錯了,這是貓。」同理,想讓 Neural Network 能夠學習,需要定義一個指標來衡量模型學習的好壞,讓我們知道現在的模型與訓練資料有沒有擬合(fit)。

一般進行機器學習任務時會有一個目標函數(Objective Function),演算法便是對這個目標函數進行最佳化(optimization)。例如在分類任務中,即是使用損失函數(Loss Function)作為其目標函數,又稱為 代價函數(Cost Function)

損失函數(Loss Function): 計算單個資料點的誤差 
代價函數(Cost Function): 計算整個訓練集所有損失之和的平均值

所以深度學習的訓練是代價函數(Cost Function)最小化的過程。有了 loss 的概念後,現在正式來談一下反向傳播。以下引用 wiki 的定義:

反向傳播(英語:Backpropagation,縮寫為BP)是「誤差反向傳播」的簡稱,是一種與最優化方法(如梯度下降法)結合使用的,用來訓練人工神經網絡的常見方法。該方法對網絡中所有權重計算損失函數的梯度。這個梯度會反饋給最優化方法,用來更新權值以最小化損失函數。

這個時候需要講解一下 梯度下降法(Gradient Descent) ,直接上動態圖理解概念:

[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動
http://cpmarkchang.logdown.com/posts/434534-optimization-method-momentum
梯度下降法是一種 Optimizer ,幫助改善網絡的權重,以減少 loss。 作法:每次計算函數點上面的梯度,並且沿著反方向的步長(step)迭代,總有一天會走到局部最小值。它是最佳化的一種方法,目的是想讓 cost function 最小化,找出最佳的權重(weights)。

反向傳播搭配梯度下降的方式去更新神經元的權重,所謂的 從資料中學習 是由比對正確與錯誤答案之間的差異,從正確/錯誤經驗中學習,將這些差異反向傳遞回去,每一次迭代都修正相對應的神經元,使其在下一輪訓練可以得到更準確的結果。

例如本文一開始提到的例子:今天模型的任務是辨識貓跟狗的圖片。在第一次 ANN 看貓的圖片時只有部分的神經元被激活,那如果輸出的結果被預測為狗,表示結果錯誤,那麼訓練中透過反向傳播調整權重參數,使最後神經元能夠對真正重要的信息更為敏感。

[魔法陣系列] Artificial Neural Network (ANN) 之術式啟動
https://www.cnblogs.com/ooon/p/5284676.html

Backpropagation 的基本流程:(引用自「類神經網路跟Backpropagation一點筆記」)

  1. 初始化神經網路所有權重
  2. 將資料由input layer往output layer向前傳遞運算(forward)計算出所有神經元的output
  3. 計算誤差由output layer往input layer向後傳遞運算(backward)算出每個神經元對誤差的影響
  4. 用誤差影響去更新權重
  5. 重複2,3,4直到誤差收斂到夠小

此篇帶給各位見習魔法使 ANN 魔法陣啟動的方式,講解 Neural Networks 是如何運行,以及深度學習是怎麼「學習」的。

本系列「英雄集結:深度學習的魔法使們」目的是希望讓閱讀的讀者不要被太多數學推導所嚇倒(其實是筆者怕嚇到自己),我們一步一步來,從入門開始欣賞深度學習之美,後面可怕的野獸就留給未來的我們唷!

學習是永無止盡的,人類是如此,機器也是。

下篇預計會讓各位實戰演練抓一下畫 ANN 魔法陣的感覺,謝謝有看到這句話的大家!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Servlets & JSP(中文版)

Head First Servlets & JSP(中文版)

(美)巴萨姆、(美)塞若、(美)贝茨 / 苏钰函、林剑 / 中国电力出版社 / 2006-10 / 98.00元

《Head First Servlets·JSP》(中文版)结合SCWCD考试大纲讲述了关于如何编写servlets和JSP代码,如何使用JSP表达式语言,如何部署Web应用,如何开发定制标记,以及会话状态、包装器、过滤器、企业设计模式等方面的知识,以一种轻松、幽默而又形象的方式让你了解、掌握servlets和JSP,并将其运用到你的项目中去。《Head First Servlets·JSP》(中......一起来看看 《Head First Servlets & JSP(中文版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换