1. 程式人生 > >神經網路詳解(基本完成)

神經網路詳解(基本完成)

Fill you up with petrol

概述

人工神經網路(artificial neural network,ANN),簡稱神經網路(neural network,NN),是一種模仿生物神經網路的結構和功能的數學模型或計算模型。神經網路由大量的人工神經元聯結進行計算。大多數情況下人工神經網路能在外界資訊的基礎上改變內部結構,是一種自適應系統。現代神經網路是一種非線性統計性資料建模工具,常用來對輸入和輸出間複雜的關係進行建模,或用來探索資料的模式。

神經網路是一種運算模型,由大量的節點(或稱“神經元”)和之間相互的聯接構成。每個節點代表一種特定的輸出函式,稱為激勵函式、啟用函式(activation function)。每兩個節點間的聯接都代表一個對於通過該連線訊號的加權值,稱之為權重

,這相當於人工神經網路的記憶。網路的輸出則依網路的連線方式,權重值和激勵函式的不同而不同。而網路自身通常都是對自然界某種演算法或者函式的逼近,也可能是對一種邏輯策略的表達。

它的構築理念是受到生物(人或其他動物)神經網路功能的運作啟發而產生的。人工神經網路通常是通過一個基於數學統計學型別的學習方法得以優化,所以人工神經網路也是數學統計學方法的一種實際應用,通過統計學的標準數學方法我們能夠得到大量的可以用函式來表達的區域性結構空間,另一方面在人工智慧學的人工感知領域,我們通過數學統計學的應用可以來做人工感知方面的決定問題(也就是說通過統計學的方法,人工神經網路能夠類似人一樣具有簡單的決定能力和簡單的判斷能力),這種方法比起正式的邏輯學推理演算更具有優勢。


神經網路最重要的用途是分類,為了讓大家對分類有個直觀的認識,咱們先看幾個例子:

  • 垃圾郵件識別:現在有一封電子郵件,把出現在裡面的所有詞彙提取出來,送進一個機器裡,機器需要判斷這封郵件是否是垃圾郵件。
  • 疾病判斷:病人到醫院去做了一大堆肝功、尿檢測驗,把測驗結果送進一個機器裡,機器需要判斷這個病人是否得病,得的什麼病。
  • 貓狗分類:有一大堆貓、狗照片,把每一張照片送進一個機器裡,機器需要判斷這幅照片裡的東西是貓還是狗。

分類器

向上例這種能自動對輸入的東西進行分類的機器,就叫做分類器。

分類器的輸入是一個數值向量,叫做特徵(向量)

就是線性代數中學到地特徵向量,若果不懂會去看書,或者看這裡:

上面兩個是同一個答主(馬同學),尋根溯源,細緻入微,比我自己總結的好。

若要全面認識神經網路,我覺得這一點基礎還是要有的,請不要忽視。

在垃圾郵件識別裡,分類器的輸入是一堆0、1值,表示字典裡的每一個詞是否在郵件中出現,比如向量(1,1,0,0,0……)就表示這封郵件裡只出現了兩個詞abandon和abnormal;第二個例子裡,分類器的輸入是一堆化驗指標;第三個例子裡,分類器的輸入是照片,假如每一張照片都是320*240畫素的紅綠藍三通道彩色照片,那麼分類器的輸入就是一個長度為320*240*3=230400的向量。

分類器的輸出也是數值。第一個例子中,輸出1表示郵件是垃圾郵件,輸出0則說明郵件是正常郵件;第二個例子中,輸出0表示健康,輸出1表示有甲肝,輸出2表示有乙肝,輸出3表示有餅乾等等;第三個例子中,輸出0表示圖片中是狗,輸出1表示是貓。

分類器的目標就是讓正確分類的比例儘可能高。一般我們需要首先收集一些樣本,人為標記上正確分類結果,然後用這些標記好的資料訓練分類器,訓練好的分類器就可以在新來的特徵向量上工作了。

神經元(生物學)

先來看一下生物學上的神經元:

這裡寫圖片描述

先湊合著看,畫質不好。

正如高中生物所學,

神經元大致可以分為樹突、突觸、細胞體和軸突。樹突為神經元的輸入通道,其功能是將其他神經元的動作電位傳遞至細胞體。其他神經元的動作電位藉由位於樹突分支上的多個突觸傳遞至樹突上。

神經細胞可以視為有兩種狀態的機器,啟用時為“是”,不啟用時為“否”。神經細胞的狀態取決於從其他神經細胞接收到的訊號量,以及突觸的性質(抑制或加強)。當訊號量超過某個閾值( Threshold )時,細胞體就會被啟用,產生電脈衝。電脈衝沿著軸突並通過突觸傳遞到其它神經元。

來源:維基百科

M-P神經元模型

作用

接受其他多個神經元傳入的訊號,然後將這些訊號彙總成總訊號,對比總訊號與閾值,如果超過閾值,則產生興奮訊號並輸出出去,如果低於閾值,則處於抑制狀態。

一條直線把平面一分為二,一個平面把三維空間一分為二,一個 n1 維超平面把 n 維空間一分為二,兩邊分屬不同的兩類,這種分類器就叫做神經元。

大家都知道平面上的直線方程是ax+by+c=0,等式左邊大於零和小於零分別表示點(x,y)在直線的一側還是另一側,把這個式子推廣到n維空間裡,直線的高維形式稱為超平面,它的方程是:

h=a1x1+a2x2+...+anxn+a0=0

神經元就是當h大於0時輸出1,h小於0時輸出0這麼一個模型,它的實質就是把特徵空間一切兩半,認為兩瓣分別屬兩個類。

構造

上圖:

這裡寫圖片描述

這個是我最喜歡的的關於神經元的圖示(自己高清重置版)。

Inputs:輸入。

Weights:權值,權重。

Bias:偏置,或者稱為閾值(Threshold)

Activationfunction:啟用函式。

這種“閾值加權和”的神經元模型稱為M-P模型 ( McCulloch-Pitts Model ),也稱為神經網路的一個處理單元( PE, Processing Element )。

其他圖示

這裡寫圖片描述

神經元結構

輸入

輸入的是特徵向量,通過對其的學習,可以得知,特徵向量代表的是變化的方向

或者說,是能代表這個事物的特徵的方向。

人有性別,身高,手,腳,五官等。

電腦有螢幕,鍵盤,CPU,GPU等。

速度有方向。

顏色有種類。

特別是速度的方向,物理中總是用一個向量箭頭代表方向,速度改變最大(增加或減少)的方向。(所以後面要 求導數)

玄之又玄,眾妙之門。

好好揣摩吧。

權重(權值)

就是特徵值嘛,輸入是特徵向量,權重和它相乘,那不就對應特徵值麼。

有正有負,加強或抑制,同特徵值一樣。

權重的絕對值大小,代表了輸入訊號對神經元的影響的大小。

正如上面的例子,輸入一張圖片,判斷是是貓還是犬。

第一層輸入的有毛髮,爪子,牙齒型別等。

第二層有頭部,腹部,腿部等。

牙齒對腿部的影響就會比較小啊,牙齒和腿部之間的權重的絕對值就會小一些,諸如此類。

還有另外的解釋,上面如何簡單形象又有趣地講解神經網路是什麼?中,我上面引用的是贊數最高的回答,贊數第二高的回答,答主:YJango 的回答,雖然略有些晦澀難懂,但我希望你能看一看,思考思考。

我們要割一刀,得有割的角度和方向,而權重,就負責調整方向,這和特徵向量的方向是兩回事。

按答主:YJango 的方向來看,n維空間中,乘以權重就好像是在不斷的扭曲空間(空間變換),使不同類別的事物被扭曲到不同的一側,來找到一個合適的n1維超平面

偏置(閾值)

上面的神經元的圖示,我們總是減去 θ,說得通俗點,要證明a>b可以證明ab>0

啟用函式(傳輸函式)

線性函式

線性函式

f(x)=kx+c

斜面函式
f(x)=TkxTx>c|x|cx<c
閾值函式
f(x)={10xcx<c

非線性函式

S型函式(Sigmoid函式)
f(x)=11+eαx(xR)
Sigmoid函式導數
f(x)=αeαx(1+eαx)2=αf(x)[1f(x)]
雙極性Sigmoid函式
h(x)=21+eαx1(xR)
雙極性Sigmoid函式導數
h(x)=2αeαx(1+eαx)2=α1h(x)22
兩種函式的影象的比較

可拖動滑動條改變α的值來觀察影象的變化。

作用

啟用函式是用來加入非線性因素的,解決線性模型所不能解決的問題。

By the way

神經網路的初始權值和閾值需要歸一化0到1之間。

因為神經元的傳輸函式在[0,1]之間區別比較大,如果大於1以後,傳輸函式值變化不大(導數或斜率就比較小),不利於反向傳播演算法的執行。反向傳播演算法需要用到各個神經元傳輸函式的梯度資訊,當神經元的輸入太大時(大於1比如),相應的該點自變數梯度值就過小,就無法順利實現權值和閾值的調整)。

傳輸函式比如sigmoid或logsig或tansig,你可以把函式影象畫出來,會發現,[-1,1]之間函式影象比較徒,一階導數(梯度)比較大,如果在這個範圍之外,影象就比較平坦,一階導數(梯度)就接近0了。

感知器模型

感知器模型,是一種最簡單的神經網路模型結構,其網路結構包括輸入層與輸出層兩層,如下圖所示:

這裡寫圖片描述

其為具有兩個輸入神經元,一個輸出神經元的感知器模型。

我們知道該模型是可以做與或非運算的。

這是因為如果我們要做與或非運算,那麼對於輸入x1,x2來說,其取值只能是0或1,而我們的輸出y=f(i=12wi

相關推薦

神經網路基本完成

Fill you up with petrol 概述 人工神經網路(artificial neural network,ANN),簡稱神經網路(neural network,NN),是一種模仿生物神經網路的結構和功能的數學模型或計算模型。神經網路由大量的人工

深度學習 --- Hopfield神經網路吸引子的性質、網路的權值的設計、網路的資訊儲存容量

上一節我們詳細的講解了Hopfield神經網路的工作過程,引出了吸引子的概念,簡單來說,吸引子就是Hopfield神經網路穩定時其中一個狀態,不懂的請看 Hopfield神經網路詳解,下面我們就開始看看吸引子有什麼性質: 1.吸引子的性質       &nb

深度學習 --- 隨機神經網路玻爾茲曼機學習演算法、執行演算法

BM網路的學習演算法 (1)  學習過程       通過有導師學習,BM網路可以對訓練集中各模式的概率分佈進行模擬,從而實現聯想記憶.學習的目的是通過調整網路權值使訓練集中的模式在網路狀態中以相同的概率再現.學習過程可分為兩個階段;第一階段

深度學習 --- 深度卷積神經網路AlexNet 網路

  本篇將解釋另外一個卷積神經網路,該網路是Hinton率領的谷歌團隊(Alex Krizhevsky,Ilya Sutskever,Geoffrey E. Hinton)在2010年的ImageNet大賽獲得冠軍的一個神經網路,因此本節主要參考的論文也是這次大賽的論文即“Imag

雙向長短時記憶迴圈神經網路Bi-directional LSTM RNN

1. Recurrent Neural Network (RNN) 儘管從多層感知器(MLP)到迴圈神經網路(RNN)的擴充套件看起來微不足道,但是這對於序列的學習具有深遠的意義。迴圈神經網路(RNN)的使用是用來處理序列資料的。在傳統的神經網路中模型中,層與

datetime 模組基本的日期和時間型別

datetime 模組詳解 -- 基本的日期和時間型別 datetime 模組提供了各種類用於操作日期和時間,該模組側重於高效率的格式化輸出在 Python 中,與時間處理有關的模組包括:time,datetime 以及 calendardatetime 模組定義了兩個常量: da

layabox 完成微信排行榜 進行中

希望在看這篇部落格之前你已經仔細的瞭解過微信的開放(封閉)資料域了; 微信的開放資料域是為了保護微信的資料安全,這裡面一旦涉及到  wx.getgrounp  wx.get....  wx.get .... 都將被保護起來,如何保護它允許你在一個封閉的區域裡面讓他顯示出來但

【Caffe】網路引數Alexnet舉例

本文為博主學習caffe的相關筆記。 在caffe框架中,網路的各個層的引數可以自己配置。檔名一般是train_val.prototxt。 一、Alexnet: 1. 資料層。 資料層一般作為網路的第一層,由cpu讀取資料庫中的資料,後面的層的計算由gpu進行。 #資料層(第

【Android】SQLite資料庫基本用法極簡潔

    Android操作SQLite資料庫(極簡潔,極易懂) 本篇原始碼地址: 原始碼裡面有詳細註釋,切記要修改一下gradle的版本號為本地gradle版本號,否則AndroidStduio會自行下載,浪費時間。 一、成品效果圖 Android

RecyclerView基本使用+解決複用+新增HEAD和FOOT+上拉載入更多+下拉重新整理以及ExpandableListView的簡單使用

一、RecyclerView的簡單使用先看效果圖程式碼實現1.引入recyclerview包implementation 'com.android.support:design:27.1.0' 2.佈局中新增RecyclerView<?xml version="1.0"

GURB實施級

linux grub一、什麽是grub GRand Unified Bootloader,由名字就能看出,這是一個多重開機管理系統。目前在centos 6.x等linux發行版上使用的是0.97版本,在centos 7系列用的是grub2。這裏先討論一下grub0.97版本,grub2的機制已經變了,後

Redis集群之配置文件待完善

enable ice local ise bare config 停止 databases end 運維Redis集群的核心任務就是配置文件Redis.conf 命令行將現使用的Redis配置參數導出到 redis.conf.bak文件 grep ‘^[^#]‘ /etc

componentWillReceivePropsthis.props狀態改變檢測機制

指定 獲取 urn 相同 dcom obj 簡單 經典 int 參考資料:http://blog.csdn.net/ElinaVampire/article/details/51813677 大家先看一張關於組件掛載的經典的圖片: 下面一一說一下這

Netstat命令windows下

3.6 包含 baidu ack sin foreign 流行 ogl windows 轉自:http://blog.csdn.net/hsd2012/article/details/50759017 Netstat 用於顯示與IP 、TCP 、UDP 和ICMP 協議

MySQL之數據表的查詢SELECT語法

clas reg 3.2 查詢語句 我們 lin where 過濾 情況 上一篇講了比較簡單的單表查詢以及MySQL的組函數,這一篇給大家分享一點比較難得知識了,關於多表查詢,子查詢,左連接,外連接等等。希望大家能都得到幫助! 在開始之前因為要多表查詢,所以搭建好環境:

細說show slave status參數最全【轉】

-c eol 通過命令 可能 id號 使用 padding register 正在 在搭建好mysql主從之後,我們一般在從庫上通過命令 show slave status\G 來查看主從的狀態,會有很多的參數,接下來筆者就帶大家好好的了

DPMDeformable Part Model原理匯總

特征向量 成就 算法思想 filter people tell 梯度 錨點 精度 寫在前面: DPM(Deformable Part Model),正如其名稱所述,可變形的組件模型,是一種基於組件的檢測算法,其所見即其意。該模型由大神Felzenszwalb在2008年提

Spring中@Component註解,@Controller註解網摘

tin ava 代碼 autowired reat control type imp 訪問   在使用Spring的過程中,為了避免大量使用Bean註入的Xml配置文件,我們會采用Spring提供的自動掃描註入的方式, 只需要添加幾行自動註入的的配置,便可以完成Servic

Git遠程操作新手必備

tar etc rename 也有 mas 本地文件 轉載 其中 efault Git是目前最流行的版本管理系統,學會Git幾乎成了開發者的必備技能。 Git有很多優勢,其中之一就是遠程操作非常簡便。本文詳細介紹5個Git命令,它們的概念和用法,理解了這些內容,你就會完全掌

最小生成樹算法prim+kruskal

span 實現 比較 info 開始 += width map end 最小生成樹概念: 一個有 n 個結點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有 n 個結點,並且有保持圖連通的最少的邊。 最小生成樹可以用kruskal(克魯斯卡爾)算法或prim(普