人工神經網絡(初識)

人工神經網絡算法

  • 人工神經網絡,是模擬生物神經網絡進行信息處理的一種數學模型,它對大腦的生理研究成果爲基礎,其目的在於模擬大腦的某些機理與機制,實現一些特定的功能
  • 1943年, 美國內心學家和數學家聯合提出了形式神經元的數學模型MP模型,證實了單個神經元能執行邏輯功能,開創了人工神經網絡研究的時代.1957年,計算機科學家用硬件完成了最先的神經網絡模型,即感知器,並用來模擬生物的感知和學習能力.1969年, M.Minsky等仔細分析了以感知器爲表明的神經網絡系統的功能及侷限後,指出感知器不能解決高階謂詞問題.隨着20世紀80年代之後,超大規模集成電路,腦科學,生物學,光學的迅速發展爲人工神經網絡的發展打下了基礎,人工神經網絡進入興盛期
  • 人工神經元是人工神經網絡操做的基本信息處理單位,人工神經元的模型以下,它是人工神經網絡設計基礎,一個神經原對輸入信號X = [x1, x2, ...xm]T的輸出y爲y=f(u+b)
  •  
  • 人工神經網絡的學習也稱爲訓練,指的是神經網絡在收到外部環境的刺激下調整神經網絡的參數,是神經網絡以一種新的方式對外部環境作出反應的一個過程.在分類與預測中,人工神經將網絡主要使用有指導的學習方式,即根據給定的訓練樣本,調整人工神經網絡的參數以使網絡輸出接近於已知的樣本類標記或其餘形式的因變量.
  • 激活函數分類表
  • 在人工神經網絡的發展過程當中,提出了多種努通的學習規則.沒有一種特定的學習算法適用於全部的網絡的結構和具體問題.在分類與預測中,δ學習規則(偏差矯正學習算法)是使用最普遍的一種偏差矯正學習算法個努神經網絡的輸出偏差對神經元的鏈接強敵進行修正,屬於有指導的學習.設神經網絡中的神經元i做爲輸入,神經元j做爲輸出神經元,他們的鏈接權值爲wij,則對權值的修正爲Δwij = ηδiΥi,其中η爲學習率,δj = Τj - Υj爲j的誤差,即輸出神經元j的實際輸出和教師信號之差,
  • 神經網絡訓練是否完成經常使用函數(也是目標函數)E來衡量.當偏差函數小於某一個設定的值使即中止神經網絡的訓練偏差函數爲衡量實際輸出向量Yk於指望值向量Tk偏差大小的函數,長採用二乘偏差函數來定義爲E = 1/2∑nk=1k - Τk]2n爲訓練樣本的個數
  • 使用人工神經網絡模型須要肯定網絡鏈接的拓撲結構,神經元的特徵和學習規則等,經常使用的用來實現分誒和預測人工神經網絡算法以下
  • 算法名稱
    算法描述
    ANFIS自適應神經網絡 神經網絡鑲嵌在一個所有模糊的結果之中,在不知不覺中向訓練數據學習,自動生產,修正並高度歸納出最佳的輸入與輸出變量的隸屬函數以及模糊規則;另外,神經網絡的各層結構於參數也都具備了明確的,易於理解的物理意義.
    BP神經網絡 是一種按偏差逆傳播算法訓練的多層前饋網絡,學習算法是δ學習規則,是目前應用最普遍的神經網絡模型之一
    FNN神經網絡 FNN模糊神經網絡是具備模糊權係數或者輸入信號是模糊量的神經網絡,是模糊系統與神經網絡項結合的產物,它匯聚了神經網絡與模糊系統的優勢,集聯想,識別,自適應及模糊信息處理於一體.
    GMDH神經網絡 GMGH網絡也稱爲多項式網絡,它是前饋神經網絡中經常使用的一種用於預測的神經網絡,它的特色是網絡結構不固定,並且在訓練過程當中不斷改變
    LM神經網絡 是基於梯度降低法和牛頓法結合的多層前饋網絡,特色:迭代次數少,收斂速度快,精確度高
    RBF徑向基神經網絡

    RBF網絡可以以任意精度逼近任意連續函數,從輸入層到隱含層的變換是非線性的,而從隱含層到輸出層的變換是線性的,特別適合於解決分類問題api

  • BP神經網絡的學習算法是δ學習規則,目標函數採用E = ∑nk=1[Yk - Tk]2
  • 反向傳播算法的特徵是利用輸出後的偏差來估計輸出層的直接前導層的偏差,再用這個偏差估計更前一層的偏差,如此一層一層的反向傳播下去,就得到了全部其餘各層的偏差估計,這樣就造成了將輸出層表現出的偏差沿着與輸入傳送相反的放線逐級項網絡的輸入層傳遞的過程.
  • BP算法的學習過程由信號的正向傳播與偏差的逆向傳播兩個過程.正向傳播時,輸入信號脛骨隱層的處理後,傳向輸出層.若輸出節點未能得到指望的輸出,則准入偏差的逆向傳播階段,將輸出偏差按某種形式,經過隱層向輸入層返回,並分攤給隱層4個節點與輸入層x1, x2, x3三個輸入節點,從而得到各層單元的參考偏差或稱號偏差,做爲修改各單元權值的依據.這種信號正向傳播與偏差逆向傳播的各層權矩陣的修改過程,是周而復始進行的,權值不斷修改過程,也就是網絡的學習(活稱訓練)過程.此過程一直進行到網絡輸出的偏差逐漸減小到可接受的程度或達到設定的學習次數爲止.
  • 算法開始後,給定學習次數上限初始化學習次數爲0,對權值和閾值賦予曉得隨機數,通常在[-1.1]之間,輸入樣本數據,網絡正向傳播,獲得中間層與輸出層的值.比較輸出層的值與教師信號值的偏差用偏差函數E來判斷偏差是否小於偏差上限,入不小於偏差上限,則對中間層和輸出層權值和閾值進行更新,更新的算法爲δ學習規則,更新權值和閾值後,再次將樣本數據做爲輸入,獲得中間層與輸出層的值,計算偏差E是否小於上限,學習次數是否達到指定值,如達到,學習結束.
  •  
  • BP算法只用到均方偏差函數對權值和閾值的一階導數(梯度)的信息,使得算法存在收斂速度緩慢,易陷入局部較小等缺陷.爲了解決這一問題,Hinton等人於2006年提出了非監督貪心逐層訓練算法,爲解決深層結構相關的優化難題帶來但願,並以此爲基礎,發展稱了"深度學習"算法,本書中所創建的神經網絡,結構跟傳統的BP神經網絡是相似的,可是求解算法已經用了新的逐層訓練算法
  • 神經網絡預測銷量高低代碼以下
  • # -*- coding:utf-8 -*-
    
    import sys
    
    reload(sys)
    sys.setdefaultencoding("utf-8")
    
    """
    使用神經網絡算法預測銷量高低
    """
    
    # 參數初始化
    import pandas as pd
    data = pd.read_csv("./sales.csv", header=None, sep="\t",
                       names=["date", "sale", "item1", "item2", "item3", "item4"])
    # 根據類別表前轉化成數據
    data[data["item1"] == u""] = 1
    data[data["item1"] != u""] = 0
    
    data[data["item2"] == u""] = 1
    data[data["item2"] != u""] = 0
    
    data[data["item3"] == u""] = 1
    data[data["item3"] != u""] = 0
    
    data[data["item4"] == u""] = 1
    data[data["item4"] != u""] = 0
    
    x = data.iloc[:, :3].as_matrix().astype(int)  # 轉化稱int
    y = data.iloc[:3].as_matrix().astype(int)  # 轉化成int
    
    from keras.models import Sequential
    from keras.layers.core import Dense, Activation
    
    model = Sequential()  # 創建模型
    model.add(Dense(3, 10))
    model.add(Activation('relu'))  # 用relu函數做爲激活函數,可以大幅提供精準度
    model.add(Dense(10, 1))
    model.add(Activation('sigmoid'))  # 因爲是0-1輸出,用sigmoid函數做爲激活函數
    
    model.compile(loss='binary_crossentropy',optimizer='adam', class_mode='binary')
    # 編譯 模型,因爲作的是二元分類,因此指定損失函數爲binary_crossentropy,以及模式爲binary
    # 另外常見的損失函數還有mean_squared_error,categorical_crossentropy等,
    
    model.fit(x,y, nb_epoch=1000, batch_size=10)  # 訓練模型 # 學習1000次
    yp = model.predict_classes(x).reshape(len(y))  # 分類預測
  • 神經網絡須要較多的樣本集,另外哎吆考慮過擬合的狀況,事實上,神經網絡的擬合能力很強.容易出現果泥喝現象.
相關文章
相關標籤/搜索