1. 程式人生 > >模式識別(Pattern Recognition)學習筆記(十九)--多層感知器模型(MLP)

模式識別(Pattern Recognition)學習筆記(十九)--多層感知器模型(MLP)

       早前已經學習了感知器學習演算法,主要通過對那些錯分類的樣本進行求和來表示對錯分樣本的懲罰,但明顯的它是一個線性的判別函式;而且上節學到了感知器神經元(閾值邏輯單元),對於單個的感知器神經元來說,儘管它能夠實現線性可分資料的分類問題(如與、或問題),但是卻無法解決非線性問題,如邏輯學裡的異或(XOR)問題甚至是高階,那麼這樣的問題該如何利用簡單學習機器來解決呢?

       回想下前面在非線性分類器中提到的分段線性判別,它的目的是為了將非線性函式擬合成多段線性函式的組合,同樣,關於上述問題,我們也可以採用這一思想,對於任意複雜形狀的分類區域,總可以用多個神經元組成一定的層次結構來實現,如圖,也即多個感知器神經元的組合:

                     (1)             (這裡依然指的是階躍函式,用作傳遞函式)


       上圖中的模型其實就是:前一層神經元的輸出是後一層神經元的輸入,最後一層只有一個神經元,它接收來自前一層的n個輸入,給出作為決策的一個輸出。

       儘管我們有了這種多層學習模型的驚喜發現,但是遺憾的是,之前線上性判別裡學到的感知器學習演算法並不能直接應用在這種多層學習模型的引數學習上(為什麼呢,因為要使用梯度下降法訓練更新權值,而在該模型,看公式(1),神經元的傳遞函式為階躍函式,輸出端的誤差只能對最後一個神經元的權係數求梯度,無法對其他神經元的權係數求梯度,所以無法使用這種梯度下降演算法學習其他神經元的權值;

),因此上世紀60年代,多層學習模型的提出者Rosenblatt隨即給出瞭解決方案:除了最後一個神經元外,預先固定其他所有神經元的權重,學習過程就變成只是用感知器學習演算法來尋找最後一個神經元的權係數。事實上,這樣做相當於通過第一層神經元把原始的特徵空間變換到一個新的空間,且第一層的每個神經元構成這個新空間的每一維,其中每一維取值為二值,然後再在這個新空間裡用感知器學習演算法構造一個線性分類器;顯然,由於第一層神經元的權重值由人為確定,因此該模型的效能好壞很大程度上直接取決於第一層神經元權重值的是否選取適當,即第一層怎樣設計才最恰當,而這些又直接取決於輸入的資料性質,但是不幸的是,在當時還沒有人能給出針對任意問題求解第一層引數的方法,於是就這樣僅僅因為無法對引數進行學習的瓶頸,導致了人們對感知器的研究就這樣停滯了大約有25年之久,直道25年後一種全新且至今廣為傳用的學習演算法‘BP’的出現(作為後續的學習),才打破了僵局。

       但是,不管神經網路模型的研究停滯不前了多久,多層感知器模型都是NN研究上的一個火光性的亮點,後續的一系列模型及學習演算法(如當今火熱的深度學習,還有經典的BP學習演算法)都是基於此的,這麼多年過去人們一提到NN,仍然會首先想到感知機模型,不僅是因為它簡單,更因為它的歷史貢獻性無可替代。

相關推薦

模式識別Pattern Recognition學習筆記--感知模型MLP

       早前已經學習了感知器學習演算法,主要通過對那些錯分類的樣本進行求和來表示對錯分樣本的懲罰,但明顯的它是一個線性的判別函式;而且上節學到了感知器神經元(閾值邏輯單元),對於單個的感知器神經元來說,儘管它能夠實現線性可分資料的分類問題(如與、或問題),但是卻無法解

【機器學習-斯坦福】學習筆記4 ——牛頓方法;指數分佈族; 廣義線性模型GLM

牛頓方法 本次課程大綱: 1、  牛頓方法:對Logistic模型進行擬合 2、 指數分佈族 3、  廣義線性模型(GLM):聯絡Logistic迴歸和最小二乘模型 複習: Logistic迴歸:分類演算法 假設給定x以為引數的y=1和y=0的概率:

Androin學習筆記二:Java android Socket通訊檢測server連線是否斷開

Pre 在利用socket寫通訊程式的時候,想檢測伺服器是否還活著。 從網上找了很多資料,都沒有自己合適的,最後自己想了個辦法,不過也相當於截取了心跳檢測的一部分。 這裡檢測的是遠端server的連線,而不是本地是否連線成功。首先想到socket類的方法isClosed()、isConnected

深度學習筆記用Torch實現感知

上一次我們使用了輸出節點和輸入節點直接相連的網路。網路裡只有兩個可變引數。這種網路只能表示一條直線,不能適應複雜的曲線。我們將把它改造為一個多層網路。一個輸入節點,然後是兩個隱藏層,每個隱藏層有3個節點,每個隱藏節點後面都跟一個非線性的Sigmoid函式。如圖所示,這次

學習筆記節課

作業zip壓縮工具 zip支持壓縮目錄。windows下有zip的工具和文件。 linux下默認不支持解壓windows下rar文件,需要安裝工具。 先把root下的234目錄 cp到當前目錄下。 然後把4.txt也cp過來 這樣目錄的內容比較多。 zip的壓縮文件 和gzip 。dzip2 不一樣。

Python學習筆記二_線程與進程

方法 很多 問題 quest 磁盤 結果 gil 解鎖 ems 一、什麽是線程&進程 1、進程 (Process)   是資源的集合。其實就是程序(qq進程)。對於操作系統來說一個任務就是一個進程,例如打開瀏覽器就啟動了一個瀏覽器進程,打開word就啟動了一個wo

學習筆記第二節:動態Dp

正題       因為NOIP2018考了這一個東西,所以不得不學。       我們以這一題為例題來引入今天的學習:【模板】動態dp       我們顯然可以用樹形Dp去做,倒不如我們先把方程

opencv學習筆記:SIFT特徵點檢測與匹配

SIFT(Scale-invariant feature transform)是一種檢測區域性特徵的演算法,該演算法通過求一幅圖中的特徵點(interest points,or corner points)及其有關scale 和 orientation 的描述子得到特徵並進行

opencv學習筆記:視訊讀寫

 VideoCapture:視訊抓取的類 VideoWriter :寫視訊的類 fps(frame per second)幀率:每秒抓取顯示多少幀 #include<opencv2\opencv.hpp> using namespace cv; int m

opencv學習筆記:基於距離變換和區域性自適應閾值的物件計數

案例背景:統計下圖中玉米粒的個數 方案思路:先灰度化,再二值化(基於THRESH_TRIANGLE,圖中直方圖有明顯的雙峰值),腐蝕去掉一些小雜點,距離變換,再自適應區域性閾值,膨脹連成連通域,尋找輪廓進行計數。 距離變換於1966年被學者首次提出,目前已被廣泛應

opencv學習筆記:影象融合之背景替換

以證件照為例,圖片中有大部分為背景,先用kmeans對影象進行分割,可以得到背景的標籤,然後將影象分為前景和背景兩部分,非背景的都當作前景,顯示kmeans分割後的影象dst,將原影象前景賦給dst, 背景都設為0,得到kmeans分割後的影象如下,可看到邊緣處有一些小藍邊,

TensorFlow HOWTO 4.2 感知機迴歸時間序列

4.2 多層感知機迴歸(時間序列) 這篇教程中,我們使用多層感知機來預測時間序列,這是迴歸問題。 操作步驟 匯入所需的包。 import tensorflow as tf import numpy as np import pandas as pd import matp

MLP感知神經網路

由前面介紹看到,單個感知器能夠完成線性可分資料的分類問題,是一種最簡單的可以“學習”的機器。但他無法解決非線性問題。比如下圖中的XOR問題:即(1,1)(-1,-1)屬於同一類,而(1,-1)(-1,1)屬於第二類的問題,不能由單個感知器正確分類。 即在Minsky和Papert的專著《感知器》所分

機器學習學習筆記章 聚類演算法-K-MEANS

聚類演算法 聚類的概念: 主要用來處理無監督問題,因為我們手上沒有標籤了,靠電腦自己進行分類 聚類是指把相似的東西分到一組 難點 如何評估呢(因為沒有了標籤,難以對比正確與否,很多評估方法失效了)

c#學習筆記五 目前執行緒執行函式的思路

1.如果不用傳遞引數和返回結果,僅僅是執行程式碼體,則直接在新建執行緒的時候傳遞函式的名稱。 Thread th = new Thread(FunctionName); 完整程式碼如下所示,新建子執行緒開始後,主執行緒立即返回,主執行緒與子執行緒同時執行,在螢幕上列印內容。

Maven學習筆記:Maven倉庫(maven倉庫分類)

 Maven倉庫(maven倉庫分類) ---------- 對於maven來說,倉庫只分為兩類:本地倉庫和遠端倉庫。當maven根據座標尋找構件的時候,它首先會檢視本地倉庫,如果本地倉庫存在此構件,則直接使用;如果本地倉庫不存在此構件,或者需要檢視是否有更新的構件版本

tensorflow學習筆記(三) : 雙向rnn (BiRNN)

雙向RNN實際上僅僅是兩個獨立的RNN放在一起, 本博文將介紹如何在tensorflow中實現雙向rnn 單層雙向rnn 單層雙向rnn (cs224d) tensorflow中已經提供了雙向rnn的介面,它就是tf.nn.bidirectional_dyna

Python實現感知MLP基於雙月資料集

1、載入必要的庫,生成資料集 import math import random import matplotlib.pyplot as plt import numpy as np class moon_data_class(object): def

感知python程式碼簡單的感知

    寫了個多層感知器,用bp梯度下降更新,擬合正弦曲線,效果湊合。 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt def sigmod(z): re

神經網路/感知MLP架構:選擇隱藏數量和大小的標準

隱藏層個數: 一個零隱藏層的模型可以解決線性可分資料。所以除非你早知道你的資料線性不可分,證明它也沒什麼壞處—為什麼使用比任務需求更困難的模型?如果它是線性可分的那麼一個更簡單的技術可以工作,感知器也可以。 假設您的資料確實需要通過非線性技術進行分離,則始終