日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

深度學(xué)習(xí)之線性單元(梯度下降算法)(二)

 印度阿三17 2018-09-26

關(guān)于線性

線性的概念:
“線性”=“齊次性” “可加性”,
"齊次性"是指類似于: f(ax)=af(x),
"可加性"是指類似于: f(x y)=f(x) f(y),

而對于單層感知器來說,是無法處理非線性的問題。非線性及不符合上述的條件的集合。
例如異或問題:
image.png

無法找到一個合適的直線,將兩邊分離開來。
所以這時候就需要用到了delta法則。
##delta法則

delta 法則的關(guān)鍵思想是使用梯度下降(gradient descent)來搜索可能權(quán)向量的假設(shè)空間, 以找到最佳擬合訓(xùn)練樣例的權(quán)向量。

由于在真實(shí)情況下,并不能保證訓(xùn)練集是線性可分的。因而,當(dāng)訓(xùn)練集線性不可分時該如何訓(xùn)練感知器呢?這時我們使用delta法則,通過這種方式可以找出收斂到目標(biāo)的最佳近似值。

其原理是:
image.png

因為其激活函數(shù)是線性的,所以一般被稱為線性單元。

激活函數(shù):
image.png

用向量表示就是:
image.png

當(dāng)然在這一種情況下,還需要考慮其每次計算后的結(jié)果的誤差,根據(jù)誤差來調(diào)整權(quán)值。
而這就需要用到代價函數(shù):
image.png
其中y為期望輸出,y`為實(shí)際輸出。

在求得誤差結(jié)果最小的情況下,就是我們所求的最優(yōu)解。注:這里的1/2只是為了后面的計算方便,沒有實(shí)際意義。

為了求得代價函數(shù)最小,因為:
image.png
對路所有的樣本的誤差和來說:
image.png

所以公式可以改寫為:
image.png

因為對于樣本來說(其實(shí)是監(jiān)督學(xué)習(xí)的方式),x和y都是已知的,所以上述的公式中其實(shí)就是w和E(w)的關(guān)系。對整個代價函數(shù)來說,其實(shí)只有一個變量w。

這樣如果想要獲取E(w)的最小值,及誤差最小,只需要獲取的上述變量的最小值即可。因此我們可以使用導(dǎo)數(shù)的方式來求取最小值。當(dāng)然計算機(jī)是不會解方程的,所以只能是一步一步的嘗試出最小值。

因此引進(jìn)梯度下降算法:
image.png

通過不斷的改變w的值,來找到使得E(w)最小的位置:
image.png

對w求導(dǎo)結(jié)果:
image.png

這樣就獲取的權(quán)值調(diào)整公式。

我們可以來看一下推斷出來的公式和上一章的單層感知器的差異:
image.png

其實(shí)只有激活函數(shù)不一樣!??!
下面舉個簡單的例子說明一下:

問題

輸入一組工作年限 [[5], [3], [8], [1.4], [10.1]];
期望輸出其代表的年薪:[5500, 2300, 7600, 1800, 11400]
通過隨意輸入一個工作年限來預(yù)算其的年薪。

代碼

# coding=utf-8
# numpy 支持高級大量的維度數(shù)組與矩陣運(yùn)算
import numpy  as np
# Matplotlib 是一個 Python 的 2D繪圖庫
import matplotlib.pyplot as plt


#定義坐標(biāo),設(shè)定5組輸入數(shù)據(jù),每組為(x0,x1,)
X=np.array([[1,5],
            [1,3],
            [1,8],
            [1,1.4],
            [1,10.1]]);

#設(shè)定輸入向量的期待輸出值
Y=np.array([5500,2300,7600,1800,11400]);

#設(shè)定權(quán)值向量(w0,w1)
W = np.array([0,0]); 

#設(shè)定學(xué)習(xí)率
lr = 0.01;
#計算迭代次數(shù)
n=0;
#神經(jīng)網(wǎng)絡(luò)輸出
O=0;

def  updateW():
    global  X,Y,W,lr,n;
    n =1;
    O=np.dot(X,W.T);
    #計算權(quán)值
    W_Tmp = lr*((Y-O.T).dot(X))/int(X.shape[0]);
    #更新權(quán)值向量
    W = W W_Tmp;

def draw():
	global W;

	x1=[5,3,8,1.4,10.1];
	y1=[5500,2300,7600,1800,11400];

	#繪制分割線需要的等差數(shù)列
	x=np.linspace(0,12);
	#創(chuàng)建子圖
	plt.figure();
	#根據(jù)坐標(biāo)繪圖 激活函數(shù):y=x1W1 w0
	plt.plot(x,x*W[1] W[0],'r');
	plt.plot(x1,y1,'*');
	plt.show();

if __name__ == '__main__':
	#設(shè)置迭代次數(shù)
    for index in range (100):
        updateW();
        #獲取組合器輸出結(jié)果
        O=np.dot(X,W.T);
        #打印 實(shí)際值
        print O;

    draw();

執(zhí)行結(jié)果:
image.png

參考:

線性學(xué)習(xí)器
https://blog.csdn.net/wasd6081058/article/details/7886697
零基礎(chǔ)入門深度學(xué)習(xí)(2) - 線性單元和梯度下降(寫的非常通俗易懂?。?!感謝作者)
https://www./hanbingtao/note/448086
網(wǎng)易視頻課程——深度學(xué)習(xí)入門系列
http://study.163.com/course/courseMain.htm?courseId=1004111045

來源:http://www./content-1-24611.html

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多