欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

AI:如何訓(xùn)練機(jī)器學(xué)習(xí)的模型

 更新時(shí)間:2021年04月15日 16:52:59   作者:HowieXue  
這篇文章主要介紹了是如何進(jìn)行機(jī)器學(xué)習(xí)的模型的訓(xùn)練,全文邏輯清晰,簡(jiǎn)單易懂,如果您正在學(xué)習(xí)機(jī)器學(xué)習(xí)那么可以參考下,說(shuō)不定會(huì)有不一樣的收貨

1.Training: 如何訓(xùn)練模型

一句話理解機(jī)器學(xué)習(xí)一般訓(xùn)練過(guò)程 :通過(guò)有標(biāo)簽樣本來(lái)調(diào)整(學(xué)習(xí))并確定所有權(quán)重Weights和偏差Bias的理想值。

訓(xùn)練的目標(biāo):最小化損失函數(shù)

(損失函數(shù)下面馬上會(huì)介紹)

機(jī)器學(xué)習(xí)算法在訓(xùn)練過(guò)程中,做的就是:檢查多個(gè)樣本并嘗試找出可最大限度地減少損失的模型;目標(biāo)就是將損失(Loss)最小化

在這里插入圖片描述

上圖就是一般模型訓(xùn)練的一般過(guò)程(試錯(cuò)過(guò)程),其中

  • 模型: 將一個(gè)或多個(gè)特征作為輸入,然后返回一個(gè)預(yù)測(cè) (y') 作為輸出。為了進(jìn)行簡(jiǎn)化,不妨考慮一種采用一個(gè)特征并返回一個(gè)預(yù)測(cè)的模型,如下公式(其中b為 bias,w為weight)

在這里插入圖片描述

  • 計(jì)算損失:通過(guò)損失函數(shù),計(jì)算該次參數(shù)(bias、weight)下的loss。
  • 計(jì)算參數(shù)更新:檢測(cè)損失函數(shù)的值,并為參數(shù)如bias、weight生成新值,以降低損失為最小。

例如:使用梯度下降法,因?yàn)橥ㄟ^(guò)計(jì)算整個(gè)數(shù)據(jù)集中w每個(gè)可能值的損失函數(shù)來(lái)找到收斂點(diǎn)這種方法效率太低。所以通過(guò)梯度能找到損失更小的方向,并迭代。

舉個(gè)TensorFlow代碼栗子,對(duì)應(yīng)上面公式在代碼中定義該線性模型:

y_output = tf.multiply(w,x) + b

假設(shè)該模型應(yīng)用于房?jī)r(jià)預(yù)測(cè),那么y_output為預(yù)測(cè)的房?jī)r(jià),x為輸入的房子特征值(如房子位置、面積、樓層等)

2. Loss Function:損失和損失函數(shù)

損失是一個(gè)數(shù)值 表示對(duì)于單個(gè)樣本而言模型預(yù)測(cè)的準(zhǔn)確程度。

如果模型的預(yù)測(cè)完全準(zhǔn)確,則損失為零,否則損失會(huì)較大。

訓(xùn)練模型的目標(biāo)是從所有樣本中找到一組平均損失“較小”的權(quán)重和偏差。

損失函數(shù)的目標(biāo):準(zhǔn)確找到預(yù)測(cè)值和真實(shí)值的差距

在這里插入圖片描述

如圖 紅色箭頭表示損失,藍(lán)線表示預(yù)測(cè)。明顯左側(cè)模型的損失較大;右側(cè)模型的損失較小

要確定loss,模型必須定義損失函數(shù) loss function。例如,線性回歸模型通常將均方誤差用作損失函數(shù),而邏輯回歸模型則使用對(duì)數(shù)損失函數(shù)。

正確的損失函數(shù),可以起到讓預(yù)測(cè)值一直逼近真實(shí)值的效果,當(dāng)預(yù)測(cè)值和真實(shí)值相等時(shí),loss值最小。

舉個(gè)TensorFlow代碼栗子,在代碼中定義一個(gè)損失loss_price 表示房?jī)r(jià)預(yù)測(cè)時(shí)的loss,使用最小二乘法作為損失函數(shù):

loss_price = tr.reduce_sum(tf.pow(y_real - y_output), 2)

這里,y_real是代表真實(shí)值,y_output代表模型輸出值(既上文公式的y' ),因?yàn)橛械臅r(shí)候這倆差值會(huì)是負(fù)數(shù),所以會(huì)對(duì)誤差開(kāi)平方,具體可以搜索下最小二乘法公式

3. Gradient Descent:梯度下降法

理解梯度下降就好比在山頂以最快速度下山:

好比道士下山,如何在一座山頂上,找到最短的路徑下山,并且確定最短路徑的方向

原理上就是凸形問(wèn)題求最優(yōu)解,因?yàn)橹挥幸粋€(gè)最低點(diǎn);即只存在一個(gè)斜率正好為 0 的位置。這個(gè)最小值就是損失函數(shù)收斂之處。

在這里插入圖片描述

通過(guò)計(jì)算整個(gè)數(shù)據(jù)集中 每個(gè)可能值的損失函數(shù)來(lái)找到收斂點(diǎn)這種方法效率太低。我們來(lái)研究一種更好的機(jī)制,這種機(jī)制在機(jī)器學(xué)習(xí)領(lǐng)域非常熱門,稱為梯度下降法。

梯度下降法的目標(biāo):尋找梯度下降最快的那個(gè)方向

梯度下降法的第一個(gè)階段是為 選擇一個(gè)起始值(起點(diǎn))。起點(diǎn)并不重要;因此很多算法就直接將 設(shè)為 0 或隨機(jī)選擇一個(gè)值。下圖顯示的是我們選擇了一個(gè)稍大于 0 的起點(diǎn):

在這里插入圖片描述

然后,梯度下降法算法會(huì)計(jì)算損失曲線在起點(diǎn)處的梯度。簡(jiǎn)而言之,梯度是偏導(dǎo)數(shù)的矢量;它可以讓您了解哪個(gè)方向距離目標(biāo)“更近”或“更遠(yuǎn)”。請(qǐng)注意,損失相對(duì)于單個(gè)權(quán)重的梯度(如圖 所示)就等于導(dǎo)數(shù)。

請(qǐng)注意,梯度是一個(gè)矢量,因此具有以下兩個(gè)特征:

  • 方向
  • 大小

梯度始終指向損失函數(shù)中增長(zhǎng)最為迅猛的方向。梯度下降法算法會(huì)沿著負(fù)梯度的方向走一步,以便盡快降低損失

為了確定損失函數(shù)曲線上的下一個(gè)點(diǎn),梯度下降法算法會(huì)將梯度大小的一部分與起點(diǎn)相加

在這里插入圖片描述

然后,梯度下降法會(huì)重復(fù)此過(guò)程,逐漸接近最低點(diǎn)。(找到了方向)

  • 隨機(jī)梯度下降法SGD:解決數(shù)據(jù)過(guò)大,既一個(gè)Batch過(guò)大問(wèn)題,每次迭代只是用一個(gè)樣本(Batch為1),隨機(jī)表示各個(gè)batch的一個(gè)樣本都是隨機(jī)選擇。

4. Learning Rate:學(xué)習(xí)速率

好比上面下山問(wèn)題中,每次下山的步長(zhǎng)。

因?yàn)樘荻仁噶烤哂蟹较蚝痛笮?,梯度下降法算法用梯度乘以一個(gè)稱為學(xué)習(xí)速率(有時(shí)也稱為步長(zhǎng))的標(biāo)量,以確定下一個(gè)點(diǎn)的位置。這是超參數(shù),用來(lái)調(diào)整AI算法速率

例如,如果梯度大小為 2.5,學(xué)習(xí)速率為 0.01,則梯度下降法算法會(huì)選擇距離前一個(gè)點(diǎn) 0.025 的位置作為下一個(gè)點(diǎn)。

超參數(shù)是編程人員在機(jī)器學(xué)習(xí)算法中用于調(diào)整的旋鈕。大多數(shù)機(jī)器學(xué)習(xí)編程人員會(huì)花費(fèi)相當(dāng)多的時(shí)間來(lái)調(diào)整學(xué)習(xí)速率。如果您選擇的學(xué)習(xí)速率過(guò)小,就會(huì)花費(fèi)太長(zhǎng)的學(xué)習(xí)時(shí)間:

在這里插入圖片描述

繼續(xù)上面的栗子,實(shí)現(xiàn)梯度下降代碼為:

train_step = tf.train.GradientDescentOptimizer(0.025).minimize(loss_price)

這里設(shè)置梯度下降學(xué)習(xí)率為0.025, GradientDescentOptimizer()就是使用的隨機(jī)梯度下降算法, 而loss_price是由上面的損失函數(shù)獲得的loss

至此有了模型、損失函數(shù)以及梯度下降函數(shù),就可以進(jìn)行模型訓(xùn)練階段了:

Session = tf.Session()
Session.run(init)
for _ in range(1000):
	Session.run(train_step, feed_dict={x:x_data, y:y_data}) 

這里可以通過(guò)for設(shè)置固定的training 次數(shù),也可以設(shè)置條件為損失函數(shù)的值低于設(shè)定值,

x_data y_data則為訓(xùn)練所用真實(shí)數(shù)據(jù),x y 是輸入輸出的placeholder(代碼詳情參見(jiàn)TensorFlow API文檔)

5. 擴(kuò)展:BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程

BP(BackPropagation)網(wǎng)絡(luò)的訓(xùn)練,是反向傳播算法的過(guò)程,是由數(shù)據(jù)信息的正向傳播和誤差Error的反向傳播兩個(gè)過(guò)程組成。

反向傳播算法是神經(jīng)網(wǎng)絡(luò)算法的核心,其數(shù)學(xué)原理是:鏈?zhǔn)角髮?dǎo)法則

  • 正向傳播過(guò)程:

輸入層通過(guò)接收輸入數(shù)據(jù),傳遞給中間層(各隱藏層)神經(jīng)元,每一個(gè)神經(jīng)元進(jìn)行數(shù)據(jù)處理變換,然后通過(guò)最后一個(gè)隱藏層傳遞到輸出層對(duì)外輸出。

  • 反向傳播過(guò)程:

正向傳播后通過(guò)真實(shí)值和輸出值得到誤差Error,當(dāng)Error大于設(shè)定值,既實(shí)際輸出與期望輸出差別過(guò)大時(shí),進(jìn)入誤差反向傳播階段:

Error通過(guò)輸出層,按照誤差梯度下降的方式,如上面提到的隨機(jī)梯度下降法SGD,反向修正各層參數(shù)(如Weights),向隱藏層、輸入層逐層反轉(zhuǎn)。

通過(guò)不斷的正向、反向傳播,直到輸出的誤差減少到預(yù)定值,或到達(dá)最大訓(xùn)練次數(shù)。

在這里插入圖片描述

到此這篇關(guān)于AI:如何訓(xùn)練機(jī)器學(xué)習(xí)的模型的文章就介紹到這了,相信對(duì)你有所幫助,更多相關(guān)機(jī)器學(xué)習(xí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python minidom模塊用法示例【DOM寫入和解析XML】

    Python minidom模塊用法示例【DOM寫入和解析XML】

    這篇文章主要介紹了Python minidom模塊用法,結(jié)合實(shí)例形式分析了Python DOM創(chuàng)建、寫入和解析XML文件相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • 使用Python神器對(duì)付12306變態(tài)驗(yàn)證碼

    使用Python神器對(duì)付12306變態(tài)驗(yàn)證碼

    這篇文章主要介紹了使用Python神器對(duì)付12306變態(tài)驗(yàn)證碼的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • Python實(shí)現(xiàn)爬取房源信息的示例詳解

    Python實(shí)現(xiàn)爬取房源信息的示例詳解

    站在一個(gè)租房人的立場(chǎng),租房平臺(tái)實(shí)在太多了,并且各平臺(tái)篩選和排序邏輯都不太一致。這篇文章將教教大家如何利用Python語(yǔ)言實(shí)現(xiàn)爬取房源信息,需要的可以參考一下
    2022-09-09
  • Python中Pytest測(cè)試框架的fixture使用詳解

    Python中Pytest測(cè)試框架的fixture使用詳解

    這篇文章主要介紹了Python中Pytest測(cè)試框架的fixture使用詳解,Pytest的fixture的目的是提供一個(gè)測(cè)試的基線,在此基線基礎(chǔ)上,可以更可靠的進(jìn)行重復(fù)測(cè)試,需要的朋友可以參考下
    2023-08-08
  • python使用range函數(shù)計(jì)算一組數(shù)和的方法

    python使用range函數(shù)計(jì)算一組數(shù)和的方法

    這篇文章主要介紹了python使用range函數(shù)計(jì)算一組數(shù)和的方法,涉及Python中range函數(shù)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05
  • python獲取百度熱榜鏈接的實(shí)例方法

    python獲取百度熱榜鏈接的實(shí)例方法

    在本篇文章里小編給大家整理了關(guān)于python獲取百度熱榜鏈接的實(shí)例方法,需要的朋友們可以學(xué)習(xí)參考下。
    2020-08-08
  • Python在圖片中添加文字的兩種方法

    Python在圖片中添加文字的兩種方法

    這篇文章主要給大家介紹了在Python在圖片中添加文字的兩種方法,分別是使用OpenCV和PIL這兩個(gè)方法實(shí)現(xiàn),在實(shí)際應(yīng)用中要在這兩種方法中擇優(yōu)使用。兩種方法都給出了詳細(xì)示例代碼,需要的朋友可以參考下。
    2017-04-04
  • Python?Fire實(shí)現(xiàn)自動(dòng)生成命令行接口

    Python?Fire實(shí)現(xiàn)自動(dòng)生成命令行接口

    命令行程序是平時(shí)寫一些小工具時(shí)最常用的方式,隨著命令行程序功能的豐富,也就是參數(shù)多了以后,解析和管理參數(shù)之間的關(guān)系會(huì)變得越來(lái)越繁重,而本次介紹的?Fire?庫(kù)正好可以解決這個(gè)問(wèn)題,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧
    2023-09-09
  • python實(shí)現(xiàn)合并兩個(gè)有序列表的示例代碼

    python實(shí)現(xiàn)合并兩個(gè)有序列表的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)合并兩個(gè)有序列表的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 實(shí)例分析python3實(shí)現(xiàn)并發(fā)訪問(wèn)水平切分表

    實(shí)例分析python3實(shí)現(xiàn)并發(fā)訪問(wèn)水平切分表

    在本文中小編給大家整理了關(guān)于python3實(shí)現(xiàn)并發(fā)訪問(wèn)水平切分表的相關(guān)知識(shí)點(diǎn)以及實(shí)例代碼,有興趣的朋友們參考下。
    2018-09-09

最新評(píng)論