<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

微軟Xiaowuhu根據自己親身經歷的學習,歸納出來以下教程

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

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

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

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

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

通過以下循序漸進地學習與動手實踐,一方面可以幫助讀者深刻理解“深度學習”的基礎知識,更好地理解并使用現有框架,另一方面可以助力讀者快速學習最新出現的各種神經網絡的擴展或者變型,跟上快速發展的AI浪潮。

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

適用范圍

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

深度學習小白,有直觀的人工智能的認識,強烈的學習欲望和需求,請在博客的基礎上配合代碼食用,效果更佳;

調參師,訓練過模型,調過參數,想了解框架內各層運算過程,給玄學的調參之路添加一點心理保障;

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

前期準備

環境:

Windows 10 version 1809

Visual Studio 2017 Community or above

Python 3.6.6

Jupyter Notebook (可選)

自己:

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

網絡結構概覽


1. 基本概念目錄

首先會講解一下神經網絡基本的訓練和工作原理,因為基本上各種教程里都沒有提到這一點,以至于筆者在剛開始學習神經網絡時一頭霧水,不得要領,不知從何處開始下手。

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

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

梯度下降是神經網絡的基本學習方法,我們會用單變量和雙變量兩種方式說明,配以可視化的圖解。再多的變量就無法用可視化方式來解釋了,所以我們力求用簡單的方式理解復雜的事物。

本部分最后是損失函數的講解,著重說明了神經網絡中目前最常用的均方差損失函數(用于回歸)和交叉熵損失函數(用于分類)。

2. 線性回歸

用線性回歸作為學習神經網絡的起點,是一個非常好的選擇,因為線性回歸問題本身比較容易理解,在它的基礎上,逐步的增加一些新的知識點,會形成一條比較平緩的學習曲線,或者說是邁向神經網絡的第一個小臺階。

單層的神經網絡,其實就是一個神經元,可以完成一些線性的工作,比如擬合一條直線,這用一個神經元就可以實現。當這個神經元只接收一個輸入時,就是單變量線性回歸,可以在二維平面上用可視化方法理解。當接收多個變量輸入時,叫做多變量線性回歸,此時可視化方法理解就比較困難了,通常我們會用變量兩兩組對的方式來表現。

當變量多于一個時,兩個變量的量綱和數值有可能差別很大,這種情況下,我們通常需要對樣本特征數據做歸一化,然后把數據喂給神經網絡進行訓練,否則會出現“消化不良”的情況。

3. 線性分類

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

神經網絡的一個重要功能就是分類,現實世界中的分類任務復雜多樣,但萬變不離其宗,我們都可以用同一種模式的神經網絡來處理。

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

在第二步中,我們學習了實現邏輯非門,在本部分中,我們將利用學到的二分類知識,實現邏輯與門、與非門,或門,或非門。

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

然后我們將進入線性多分類的學習。多分類時,可以一對一、一對多、多對多,那么神經網絡使用的是哪種方式呢?

Softmax函數是多分類問題的分類函數,通過對它的分析,我們學習多分類的原理、實現、以及可視化結果,從而理解神經網絡的工作方式。

4. 非線性回歸

從這一步開始,我們進入了兩層神經網絡的學習,從而解決非線性問題。

在兩層神經網絡之間,必須有激活函數連接,從而加入非線性因素,提高神經網絡的能力。所以,我們先從激活函數學起,一類是擠壓型的激活函數,常用于簡單網絡的學習;另一類是半線性的激活函數,常用于深度網絡的學習。

接下來我們將驗證著名的萬能近似定理,建立一個雙層的神經網絡,來擬合一個比較復雜的函數。

在上面的雙層神經網絡中,已經出現了很多的超參,都會影響到神經網絡的訓練結果。所以在完成了基本的擬合任務之后,我們將會嘗試著調試這些參數,得到更好的訓練效果(又快又好),從而得到超參調試的第一手經驗。

。

5. 非線性分類

我們在第三步中學習了線性分類,在本部分中,我們將學習更復雜的分類問題,比如,在很多年前,兩位著名的學者證明了感知機無法解決邏輯中的異或問題,從而使感知機這個研究領域陷入了長期的停滯。我們將會在使用雙層網絡解決異或問題。

異或問題是個簡單的二分類問題,因為畢竟只有4個樣本數據,我們會用更復雜的數據樣本來學習非線性多分類問題,并理解其工作原理。

然后我們將會用一個稍微復雜些的二分類例子,來說明在二維平面上,神經網絡是通過怎樣的神奇的線性變換加激活函數預算,把線性不可分的問題轉化為線性可分問題的。

解決完二分類問題,我們將學習如何解決更復雜的三分類問題,由于樣本的復雜性,必須在隱層使用多個神經元才能完成分類任務。

最后我們將搭建一個三層神經網絡,來解決MNIST手寫數字識別問題,并學習使用梯度檢查來幫助我們測試反向傳播代碼的正確性。

數據集的使用,是深度學習的一個基本技能,開發集、驗證集、測試集,合理地使用才能得到理想的泛化能力強的模型。

6. 模型推理與部署

我們已經用神經網絡訓練出來了一套權重矩陣,但是這個模型如何使用呢?我們總不能在實際生產環境中使用python代碼來做推理吧?更何況在手機中也是不能運行Python代碼的。

這就引出了模型的概念。一個模型會記錄神經網絡的計算圖,并加載權重矩陣,而這些模型會用C++等代碼來實現,以保證部署的便利。

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

7. 深度神經網絡

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

從這一部分開始,探討深度學習的一些細節,如權重矩陣初始化、梯度下降優化算法、批量歸一化等高級知識。

由于深度網絡的學習能力強的特點,會造成網絡對樣本數據過分擬合,從而造成泛化能力不足,因為我們需要一些手段來改善網絡的泛化能力。

8. 卷積神經網絡

卷積神經網絡是深度學習中的一個里程碑式的技術,有了這個技術,才會讓計算機有能力理解圖片和視頻信息,才會有計算機視覺的眾多應用。

在本部分的學習中,我們將會逐步介紹卷積的前向計算、卷積的反向傳播、池化的前向計算與反向傳播,然后用代碼實現一個卷積網絡并訓練一些實際數據。

在后面我們還會介紹一些經典的卷積模型,向大師們學習一些解決問題的方法論問題。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微軟
    +關注

    關注

    4

    文章

    6410

    瀏覽量

    103149
  • 神經網絡
    +關注

    關注

    42

    文章

    4590

    瀏覽量

    99202

原文標題:?【微軟】AI-神經網絡基本原理簡明教程

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    [轉帖]親身經歷的挑選培訓的過程----奉獻給大家

    親身經歷的挑選培訓的過程----奉獻給大家     前一段時間在幫朋友挑選培訓的時候,頗費周折!北京的JAVA培訓實在太
    發表于 12-10 15:25

    學習ARM9的前輩指導心得

    本人有單片機的學習基礎, 想學習ARM9,但不知道如何入手,關于ARM9使用的嵌入式操作系統的選擇又該如何選擇呢,前段時間ARM11也挺火熱的。。不清楚現在市場上主流的ARM9大家都用什么類別呢,及主流的嵌入式操作系統,跪求達人指導,一定是
    發表于 12-11 11:46

    血與淚的發明創造之路----吳堅鴻的親身經歷與反思

    圖文并茂。我06年剛畢業的時候,非??释ㄟ^發明創造來改變自己的命運,所以經常胡思亂想,期間發明了很多東西,這里重點介紹我的兩個作品,一個是“單色液晶模塊通用驅動器”,另外一個是“養豬溫控器”。 “單色
    發表于 07-25 19:09

    Quartus軟件精典學習教程

    絕對的精典,不會浪費一點時間,最精華的都在這兒呢,一點親身經歷,與大家分享,我這還有ISE的,只不是PPT的,沒法兒上傳,有需要的聯系我。
    發表于 02-20 23:03

    吳堅鴻長輩單片機程序代碼集合(共45個)

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

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

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

    大解密!學習C語言能干嘛?不學可以不?精選資料下載

    程之一,相信很多小伙伴都親身經歷的C語言的“坑害”,據了解還有一些學校的文科專業也開設了C語言課程,這簡直是把文科同學往火坑里推??!大解密!學習C語言能干嘛你被bug逼瘋了嗎你見過能編出一手漂亮C語言的笨蛋嗎?就是,當你掌握了C語言的精髓,你就基本掌握了女生的特點?;ヂ摼W
    發表于 07-22 07:00

    NSK PS1006KN002力矩電機與調試軟件EDC MEGATERM無法連接

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

    小白的嵌入式學習歷程

    **我的嵌入式學習歷程**寫在前面: 關于嵌入式的學習,CSDN或者知乎上的所有有價值的回答幾乎都大同小異。我的回答以我自己親身經歷結合我師兄師姐的經驗提煉,希望對有興趣投身這一行的
    發表于 10-27 08:44

    比較嵌入式與互聯網的異同點

    進入這家公司也快兩年了,說長不長,說短不短。這兩年真正從嵌入式行業轉入互聯網,從自己親身經歷來看,雖說同屬IT行業,一樣做后臺開發,還是有很多不同之處,下面就來比較這兩個工作的異同點:相同之處:從
    發表于 03-02 07:26

    《Linux設備驅動開發詳解》第3章、Linux內核及內核編程

    零基礎學習嵌入式開發設計,鳥哥的親身經歷。
    發表于 04-19 16:49 ?0次下載

    《Linux設備驅動開發詳解》第2章、驅動設計的硬件基礎

    鳥哥親身經歷,基礎學習linux,適合零基礎的學習嵌入式開發。
    發表于 04-19 17:55 ?1次下載

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

      三家PC定制機廠商用親身經歷說明了不會將未來再賭在SteamOS上……
    發表于 07-13 10:48 ?2102次閱讀

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

    C語言的精髓點在哪? 學到多少東西才能夠達到做項目的標準?學習的時候需要注意哪些細節點?疑問太多以至于壓得自己喘不過氣來。小編從項目的角度分析C語言到底需要掌握哪些知識,為什么要去掌握這些點,怎么去掌握。在此嘗試著總結以下幾點,
    的頭像 發表于 01-29 10:16 ?5505次閱讀

    嵌入式軟件開發面試——一個應屆生求職的親身經歷

    。通過一個多月的集中筆試面試,現在自己陸續拿到了一些滿意的offer,有成果才有說服力。而且這段時間相對比較空,于是整理總結了一些面試經歷,如果能對后面的求職者有所幫助,那么我犧牲其它時間來碼這么多的字...
    發表于 11-03 11:21 ?9次下載
    嵌入式軟件開發面試——一個應屆生求職的<b class='flag-5'>親身經歷</b>
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>