0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

微軟Xiaowuhu根據(jù)自己親身經(jīng)歷的學(xué)習(xí),歸納出來以下教程

新機(jī)器視覺 ? 來源:陳年麗 ? 2019-07-30 10:40 ? 次閱讀

我們現(xiàn)在有了很多非常厲害的深度學(xué)習(xí)框架,比如Tensorflow,CNTK,PaddlePaddle,Caffe2等等。然而,這些為了解決實(shí)際的應(yīng)用問題而生的,而不是用來學(xué)習(xí)“深度學(xué)習(xí)”知識(shí)和思想的。所以微軟Xiaowuhu根據(jù)自己親身經(jīng)歷的學(xué)習(xí)軌跡,歸納出了以下教程,可以幫助小白做到真正的從入門到精通。通過以下循序漸進(jìn)地學(xué)習(xí)與動(dòng)手實(shí)踐,一方面可以幫助讀者深刻理解“深度學(xué)習(xí)”的基礎(chǔ)知識(shí),更好地理解并使用現(xiàn)有框架,另一方面可以助力讀者快速學(xué)習(xí)最新出現(xiàn)的各種神經(jīng)網(wǎng)絡(luò)的擴(kuò)展或者變型,跟上快速發(fā)展的AI浪潮。

寫在前面,為什么要出這個(gè)系列的教程呢?

總的說來,我們現(xiàn)在有了很多非常厲害的深度學(xué)習(xí)框架,比如Tensorflow,CNTK,PaddlePaddle,Caffe2等等。然而,我們用這些框架在搭建我們自己的深度學(xué)習(xí)模型的時(shí)候,到底做了一些什么樣的操作呢?我們試圖去閱讀框架的源碼來理解框架到底幫助我們做了些什么,但是……很難!很難!很難!因?yàn)樯疃葘W(xué)習(xí)是需要加速啦,分布式計(jì)算啦,框架做了很多很多的優(yōu)化,也讓像我們這樣的小白難以理解這些框架的源碼。

這取決于你是想真正地掌握“深度學(xué)習(xí)”的思想,還是只想成為一個(gè)調(diào)參師?在我們看來,如TensorFlow,CNTK這些偉大的深度學(xué)習(xí)工具,是為了解決實(shí)際的應(yīng)用問題而生的,而不是用來學(xué)習(xí)“深度學(xué)習(xí)”知識(shí)和思想的。所以我們根據(jù)自己親身經(jīng)歷的學(xué)習(xí)軌跡,歸納出了以下教程,可以幫助小白做到真正的從入門到精通。

通過以下循序漸進(jìn)地學(xué)習(xí)與動(dòng)手實(shí)踐,一方面可以幫助讀者深刻理解“深度學(xué)習(xí)”的基礎(chǔ)知識(shí),更好地理解并使用現(xiàn)有框架,另一方面可以助力讀者快速學(xué)習(xí)最新出現(xiàn)的各種神經(jīng)網(wǎng)絡(luò)的擴(kuò)展或者變型,跟上快速發(fā)展的AI浪潮。

對于這份教程的內(nèi)容,如果沒有額外的說明,我們通常使用如下表格的命名約定:

適用范圍

沒有各種基礎(chǔ)想學(xué)習(xí)卻無從下手哀聲嘆氣的玩家,請按時(shí)跟蹤最新博客,推導(dǎo)數(shù)學(xué)公式,跑通代碼,并及時(shí)提出問題,以求最高療效;

深度學(xué)習(xí)小白,有直觀的人工智能的認(rèn)識(shí),強(qiáng)烈的學(xué)習(xí)欲望和需求,請?jiān)诓┛偷幕A(chǔ)上配合代碼食用,效果更佳;

調(diào)參師,訓(xùn)練過模型,調(diào)過參數(shù),想了解框架內(nèi)各層運(yùn)算過程,給玄學(xué)的調(diào)參之路添加一點(diǎn)心理保障;

超級(jí)高手,提出您寶貴的意見,給廣大初學(xué)者指出一條明路!

前期準(zhǔn)備

環(huán)境:

Windows 10 version 1809

Visual Studio 2017 Community or above

Python 3.6.6

Jupyter Notebook (可選)

自己:

清醒的頭腦(困了的同學(xué)請自覺泡茶),紙和筆(如果想跟著推公式的話),鬧鐘(防止久坐按時(shí)起來轉(zhuǎn)轉(zhuǎn)),厚厚的衣服(有暖氣的同學(xué)請忽略)

網(wǎng)絡(luò)結(jié)構(gòu)概覽


1. 基本概念目錄

首先會(huì)講解一下神經(jīng)網(wǎng)絡(luò)基本的訓(xùn)練和工作原理,因?yàn)榛旧细鞣N教程里都沒有提到這一點(diǎn),以至于筆者在剛開始學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)時(shí)一頭霧水,不得要領(lǐng),不知從何處開始下手。

后面接的是導(dǎo)數(shù)公式和反向傳播公式,包括矩陣求導(dǎo),這一部分可以大概瀏覽一下,主要的目的是備查,在自己推導(dǎo)反向公式時(shí)可以參考。

然后是反向傳播和梯度下降,我們先從簡單的線性方式說起(只有加法和乘法),而且用代入數(shù)值的方式來消除對公式的恐懼心理。然后會(huì)說到分層的復(fù)雜(非線性)函數(shù)的反向傳播,同樣用數(shù)值代入方式手推反向過程。

梯度下降是神經(jīng)網(wǎng)絡(luò)的基本學(xué)習(xí)方法,我們會(huì)用單變量和雙變量兩種方式說明,配以可視化的圖解。再多的變量就無法用可視化方式來解釋了,所以我們力求用簡單的方式理解復(fù)雜的事物。

本部分最后是損失函數(shù)的講解,著重說明了神經(jīng)網(wǎng)絡(luò)中目前最常用的均方差損失函數(shù)(用于回歸)和交叉熵?fù)p失函數(shù)(用于分類)。

2. 線性回歸

用線性回歸作為學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的起點(diǎn),是一個(gè)非常好的選擇,因?yàn)榫€性回歸問題本身比較容易理解,在它的基礎(chǔ)上,逐步的增加一些新的知識(shí)點(diǎn),會(huì)形成一條比較平緩的學(xué)習(xí)曲線,或者說是邁向神經(jīng)網(wǎng)絡(luò)的第一個(gè)小臺(tái)階。

單層的神經(jīng)網(wǎng)絡(luò),其實(shí)就是一個(gè)神經(jīng)元,可以完成一些線性的工作,比如擬合一條直線,這用一個(gè)神經(jīng)元就可以實(shí)現(xiàn)。當(dāng)這個(gè)神經(jīng)元只接收一個(gè)輸入時(shí),就是單變量線性回歸,可以在二維平面上用可視化方法理解。當(dāng)接收多個(gè)變量輸入時(shí),叫做多變量線性回歸,此時(shí)可視化方法理解就比較困難了,通常我們會(huì)用變量兩兩組對的方式來表現(xiàn)。

當(dāng)變量多于一個(gè)時(shí),兩個(gè)變量的量綱和數(shù)值有可能差別很大,這種情況下,我們通常需要對樣本特征數(shù)據(jù)做歸一化,然后把數(shù)據(jù)喂給神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,否則會(huì)出現(xiàn)“消化不良”的情況。

3. 線性分類

分類問題在很多資料中都稱之為邏輯回歸,Logistic Regression,其原因是使用了線性回歸中的線性模型,加上一個(gè)Logistic二分類函數(shù),共同構(gòu)造了一個(gè)分類器。我們在本書中統(tǒng)稱之為分類。

神經(jīng)網(wǎng)絡(luò)的一個(gè)重要功能就是分類,現(xiàn)實(shí)世界中的分類任務(wù)復(fù)雜多樣,但萬變不離其宗,我們都可以用同一種模式的神經(jīng)網(wǎng)絡(luò)來處理。

本部分中,我們從最簡單的線性二分類開始學(xué)習(xí),包括其原理,實(shí)現(xiàn),訓(xùn)練過程,推理過程等等,并且以可視化的方式來幫助大家更好地理解這些過程。

在第二步中,我們學(xué)習(xí)了實(shí)現(xiàn)邏輯非門,在本部分中,我們將利用學(xué)到的二分類知識(shí),實(shí)現(xiàn)邏輯與門、與非門,或門,或非門。

做二分類時(shí),我們一般用Sigmoid函數(shù)做分類函數(shù),那么和Sigmoid函數(shù)長得特別像的雙曲正切函數(shù)能不能做分類函數(shù)呢?我們將會(huì)探索這件事情,從而對分類函數(shù)、損失函數(shù)、樣本標(biāo)簽有更深的理解。

然后我們將進(jìn)入線性多分類的學(xué)習(xí)。多分類時(shí),可以一對一、一對多、多對多,那么神經(jīng)網(wǎng)絡(luò)使用的是哪種方式呢?

Softmax函數(shù)是多分類問題的分類函數(shù),通過對它的分析,我們學(xué)習(xí)多分類的原理、實(shí)現(xiàn)、以及可視化結(jié)果,從而理解神經(jīng)網(wǎng)絡(luò)的工作方式。

4. 非線性回歸

從這一步開始,我們進(jìn)入了兩層神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí),從而解決非線性問題。

在兩層神經(jīng)網(wǎng)絡(luò)之間,必須有激活函數(shù)連接,從而加入非線性因素,提高神經(jīng)網(wǎng)絡(luò)的能力。所以,我們先從激活函數(shù)學(xué)起,一類是擠壓型的激活函數(shù),常用于簡單網(wǎng)絡(luò)的學(xué)習(xí);另一類是半線性的激活函數(shù),常用于深度網(wǎng)絡(luò)的學(xué)習(xí)。

接下來我們將驗(yàn)證著名的萬能近似定理,建立一個(gè)雙層的神經(jīng)網(wǎng)絡(luò),來擬合一個(gè)比較復(fù)雜的函數(shù)。

在上面的雙層神經(jīng)網(wǎng)絡(luò)中,已經(jīng)出現(xiàn)了很多的超參,都會(huì)影響到神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果。所以在完成了基本的擬合任務(wù)之后,我們將會(huì)嘗試著調(diào)試這些參數(shù),得到更好的訓(xùn)練效果(又快又好),從而得到超參調(diào)試的第一手經(jīng)驗(yàn)。

。

5. 非線性分類

我們在第三步中學(xué)習(xí)了線性分類,在本部分中,我們將學(xué)習(xí)更復(fù)雜的分類問題,比如,在很多年前,兩位著名的學(xué)者證明了感知機(jī)無法解決邏輯中的異或問題,從而使感知機(jī)這個(gè)研究領(lǐng)域陷入了長期的停滯。我們將會(huì)在使用雙層網(wǎng)絡(luò)解決異或問題。

異或問題是個(gè)簡單的二分類問題,因?yàn)楫吘怪挥?個(gè)樣本數(shù)據(jù),我們會(huì)用更復(fù)雜的數(shù)據(jù)樣本來學(xué)習(xí)非線性多分類問題,并理解其工作原理。

然后我們將會(huì)用一個(gè)稍微復(fù)雜些的二分類例子,來說明在二維平面上,神經(jīng)網(wǎng)絡(luò)是通過怎樣的神奇的線性變換加激活函數(shù)預(yù)算,把線性不可分的問題轉(zhuǎn)化為線性可分問題的。

解決完二分類問題,我們將學(xué)習(xí)如何解決更復(fù)雜的三分類問題,由于樣本的復(fù)雜性,必須在隱層使用多個(gè)神經(jīng)元才能完成分類任務(wù)。

最后我們將搭建一個(gè)三層神經(jīng)網(wǎng)絡(luò),來解決MNIST手寫數(shù)字識(shí)別問題,并學(xué)習(xí)使用梯度檢查來幫助我們測試反向傳播代碼的正確性。

數(shù)據(jù)集的使用,是深度學(xué)習(xí)的一個(gè)基本技能,開發(fā)集、驗(yàn)證集、測試集,合理地使用才能得到理想的泛化能力強(qiáng)的模型。

6. 模型推理與部署

我們已經(jīng)用神經(jīng)網(wǎng)絡(luò)訓(xùn)練出來了一套權(quán)重矩陣,但是這個(gè)模型如何使用呢?我們總不能在實(shí)際生產(chǎn)環(huán)境中使用python代碼來做推理吧?更何況在手機(jī)中也是不能運(yùn)行Python代碼的。

這就引出了模型的概念。一個(gè)模型會(huì)記錄神經(jīng)網(wǎng)絡(luò)的計(jì)算圖,并加載權(quán)重矩陣,而這些模型會(huì)用C++等代碼來實(shí)現(xiàn),以保證部署的便利。

我們將會(huì)學(xué)習(xí)到在Windows上使用ONNX模型的方法,然后是在Android上的模型部署方法。而在iOS設(shè)備上的模型,與Android的原理相同,有需要的話可以自己找資料學(xué)習(xí)。我們也許會(huì)考慮以后增加這部分內(nèi)容。

7. 深度神經(jīng)網(wǎng)絡(luò)

在前面的幾步中,我們用簡單的案例,逐步學(xué)習(xí)了眾多的知識(shí),使得我們可以更輕松地接觸深度學(xué)習(xí)。

從這一部分開始,探討深度學(xué)習(xí)的一些細(xì)節(jié),如權(quán)重矩陣初始化、梯度下降優(yōu)化算法、批量歸一化等高級(jí)知識(shí)。

由于深度網(wǎng)絡(luò)的學(xué)習(xí)能力強(qiáng)的特點(diǎn),會(huì)造成網(wǎng)絡(luò)對樣本數(shù)據(jù)過分?jǐn)M合,從而造成泛化能力不足,因?yàn)槲覀冃枰恍┦侄蝸砀纳凭W(wǎng)絡(luò)的泛化能力。

8. 卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)中的一個(gè)里程碑式的技術(shù),有了這個(gè)技術(shù),才會(huì)讓計(jì)算機(jī)有能力理解圖片和視頻信息,才會(huì)有計(jì)算機(jī)視覺的眾多應(yīng)用。

在本部分的學(xué)習(xí)中,我們將會(huì)逐步介紹卷積的前向計(jì)算、卷積的反向傳播、池化的前向計(jì)算與反向傳播,然后用代碼實(shí)現(xiàn)一個(gè)卷積網(wǎng)絡(luò)并訓(xùn)練一些實(shí)際數(shù)據(jù)。

在后面我們還會(huì)介紹一些經(jīng)典的卷積模型,向大師們學(xué)習(xí)一些解決問題的方法論問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 微軟
    +關(guān)注

    關(guān)注

    4

    文章

    6619

    瀏覽量

    104238
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4777

    瀏覽量

    100960

原文標(biāo)題:?【微軟】AI-神經(jīng)網(wǎng)絡(luò)基本原理簡明教程

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [轉(zhuǎn)帖]親身經(jīng)歷的挑選培訓(xùn)的過程----奉獻(xiàn)給大家

    親身經(jīng)歷的挑選培訓(xùn)的過程----奉獻(xiàn)給大家     前一段時(shí)間在幫朋友挑選培訓(xùn)的時(shí)候,頗費(fèi)周折!北京的JAVA培訓(xùn)實(shí)在太
    發(fā)表于 12-10 15:25

    學(xué)習(xí)ARM9的前輩指導(dǎo)心得

    本人有單片機(jī)的學(xué)習(xí)基礎(chǔ), 想學(xué)習(xí)ARM9,但不知道如何入手,關(guān)于ARM9使用的嵌入式操作系統(tǒng)的選擇又該如何選擇呢,前段時(shí)間ARM11也挺火熱的。。不清楚現(xiàn)在市場上主流的ARM9大家都用什么類別呢,及主流的嵌入式操作系統(tǒng),跪求達(dá)人指導(dǎo),一定是
    發(fā)表于 12-11 11:46

    血與淚的發(fā)明創(chuàng)造之路----吳堅(jiān)鴻的親身經(jīng)歷與反思

    圖文并茂。我06年剛畢業(yè)的時(shí)候,非??释ㄟ^發(fā)明創(chuàng)造來改變自己的命運(yùn),所以經(jīng)常胡思亂想,期間發(fā)明了很多東西,這里重點(diǎn)介紹我的兩個(gè)作品,一個(gè)是“單色液晶模塊通用驅(qū)動(dòng)器”,另外一個(gè)是“養(yǎng)豬溫控器”。 “單色
    發(fā)表于 07-25 19:09

    Quartus軟件精典學(xué)習(xí)教程

    絕對的精典,不會(huì)浪費(fèi)一點(diǎn)時(shí)間,最精華的都在這兒呢,一點(diǎn)親身經(jīng)歷,與大家分享,我這還有ISE的,只不是PPT的,沒法兒上傳,有需要的聯(lián)系我。
    發(fā)表于 02-20 23:03

    吳堅(jiān)鴻長輩單片機(jī)程序代碼集合(共45個(gè))

    一口氣看完鴻哥的帖子,心里很有想法,在這里我想非常感謝鴻哥為我們無私奉獻(xiàn)他的程序源碼,為我們解答各種問題,用自己的生活經(jīng)歷引導(dǎo)我們少走彎路。血與淚的發(fā)明創(chuàng)造之路----吳堅(jiān)鴻的親身經(jīng)歷與反思
    發(fā)表于 08-10 16:13

    基于實(shí)踐的LabVIEW零基礎(chǔ)入門視頻教程---·10 中級(jí)計(jì)算器制作(三)

    資料不在多,而在于精,資料太多,反而會(huì)迷失方向,學(xué)習(xí)最怕的就是打亂仗,選擇對的方向,比努力更重要,這也是本人的親身經(jīng)歷!《基于實(shí)踐的LabVIEW零基礎(chǔ)入門視頻教程》方向明確,適合零基礎(chǔ)和初學(xué)者
    發(fā)表于 02-06 20:43

    大解密!學(xué)習(xí)C語言能干嘛?不學(xué)可以不?精選資料下載

    程之一,相信很多小伙伴都親身經(jīng)歷的C語言的“坑害”,據(jù)了解還有一些學(xué)校的文科專業(yè)也開設(shè)了C語言課程,這簡直是把文科同學(xué)往火坑里推啊!大解密!學(xué)習(xí)C語言能干嘛你被bug逼瘋了嗎你見過能編出一手漂亮C語言的笨蛋嗎?就是,當(dāng)你掌握了C語言的精髓,你就基本掌握了女生的特點(diǎn)?;ヂ?lián)網(wǎng)
    發(fā)表于 07-22 07:00

    NSK PS1006KN002力矩電機(jī)與調(diào)試軟件EDC MEGATERM無法連接

    MEGATERM軟件版本不是最新版;且該軟件只能在Windows 7系統(tǒng)下調(diào)試(售后);NSK驅(qū)動(dòng)器232通信接口,有自己的定義,需要自己DIY接頭(個(gè)人親身經(jīng)歷);上述兩種情況都不...
    發(fā)表于 09-15 08:52

    小白的嵌入式學(xué)習(xí)歷程

    **我的嵌入式學(xué)習(xí)歷程**寫在前面: 關(guān)于嵌入式的學(xué)習(xí),CSDN或者知乎上的所有有價(jià)值的回答幾乎都大同小異。我的回答以我自己親身經(jīng)歷結(jié)合我?guī)熜謳熃愕慕?jīng)驗(yàn)提煉,希望對有興趣投身這一行的
    發(fā)表于 10-27 08:44

    比較嵌入式與互聯(lián)網(wǎng)的異同點(diǎn)

    進(jìn)入這家公司也快兩年了,說長不長,說短不短。這兩年真正從嵌入式行業(yè)轉(zhuǎn)入互聯(lián)網(wǎng),從自己親身經(jīng)歷來看,雖說同屬IT行業(yè),一樣做后臺(tái)開發(fā),還是有很多不同之處,下面就來比較這兩個(gè)工作的異同點(diǎn):相同之處:從
    發(fā)表于 03-02 07:26

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第3章、Linux內(nèi)核及內(nèi)核編程

    零基礎(chǔ)學(xué)習(xí)嵌入式開發(fā)設(shè)計(jì),鳥哥的親身經(jīng)歷
    發(fā)表于 04-19 16:49 ?0次下載

    《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第2章、驅(qū)動(dòng)設(shè)計(jì)的硬件基礎(chǔ)

    鳥哥親身經(jīng)歷,基礎(chǔ)學(xué)習(xí)linux,適合零基礎(chǔ)的學(xué)習(xí)嵌入式開發(fā)。
    發(fā)表于 04-19 17:55 ?1次下載

    Steam大法不好使了?蒸汽主機(jī)到底怎么了?怎么破

      三家PC定制機(jī)廠商用親身經(jīng)歷說明了不會(huì)將未來再賭在SteamOS上……
    發(fā)表于 07-13 10:48 ?2167次閱讀

    分析C語言到底需要掌握哪些知識(shí)以及怎樣去掌握

    C語言的精髓點(diǎn)在哪? 學(xué)到多少東西才能夠達(dá)到做項(xiàng)目的標(biāo)準(zhǔn)?學(xué)習(xí)的時(shí)候需要注意哪些細(xì)節(jié)點(diǎn)?疑問太多以至于壓得自己喘不過氣來。小編從項(xiàng)目的角度分析C語言到底需要掌握哪些知識(shí),為什么要去掌握這些點(diǎn),怎么去掌握。在此嘗試著總結(jié)以下幾點(diǎn),
    的頭像 發(fā)表于 01-29 10:16 ?5691次閱讀

    嵌入式軟件開發(fā)面試——一個(gè)應(yīng)屆生求職的親身經(jīng)歷

    。通過一個(gè)多月的集中筆試面試,現(xiàn)在自己陸續(xù)拿到了一些滿意的offer,有成果才有說服力。而且這段時(shí)間相對比較空,于是整理總結(jié)了一些面試經(jīng)歷,如果能對后面的求職者有所幫助,那么我犧牲其它時(shí)間來碼這么多的字...
    發(fā)表于 11-03 11:21 ?9次下載
    嵌入式軟件開發(fā)面試——一個(gè)應(yīng)屆生求職的<b class='flag-5'>親身經(jīng)歷</b>