程式設計師面試常問算法:不用高等數學講明白神經網絡

2021-01-17 肥貓技術生活

一、算法題目

生物神經網絡

通常神經網絡可以分兩種,一是生物神經網絡,一是人工神經網絡。

生物神經網絡:

一般指生物的大腦神經元、細胞、觸點等組成的網絡,它產生生物的意識,幫助其進行思考和行動。

人工神經網絡:

它是一種模仿動物神經網絡行為特徵的算法數學模型。

二、算法思維分析

這是一道考察神經網絡基本原理的題目,一般來說生物神經網絡和人工神經網絡基本沒關係,但是它有助於理解人工神經網絡。如果沒有見過類似題目的人,可能覺得有點難度。以下為思維線索分析(如果已經有所了解,請跳過):

1、生物神經網絡是可以學習的,那麼人工神經網絡是不是也可以學習呢?

2、如果生物神經網絡學習的內容是各種事物、對事物的思考、及思想意識的思考等等,那麼人工神經網絡學習的內容是啥呢?

3、如何使人工神經網絡產生的結果更像人類做出的結果呢?因為計算機的結果一般都是可以數學計算的,但人類的很多事物(如感情)不好通過數學計算。

三、算法推演

1、案例數據,讓人工神經網絡在照片上分辨出狗和貓。

2、化繁為簡,用一個2X2的二維表表示一個簡單的神經網絡。

最簡神經網絡

在網絡層1中輸入狗和貓,在網絡層2輸出是狗或是貓的概率。

3、負反饋相關算法

神經網絡第一次輸出是狗或貓的概率,一般結果不準確,需要把誤差反向告訴網絡(下圖綠色的箭頭)進行調整。

神經網絡的反向反饋示意圖

循環訓練這個網絡,調整誤差,直至結果符合人類的認知誤差。

一個最簡單的神經網絡就這樣設計完成了。

四、深入推演

1、線性問題

上述神經網絡中,層1到層2參數傳遞是線性的,可以簡單理解為一元一次方程即:y=wx+b(w為係數,b為偏移量)。

在實際神經網絡模型中,層數和節點數量都是很多。但無論這個網絡多麼龐大,節點到節點的傳遞都是線性變換。但這和人類認知的事物大都是非線性的事實不符。這時候就需要激活函數登場了。

激活函數示意圖

激活函數有點類似於人類神經元的抑制與激活概念。其正常為線性輸出,達到某一臨界值時,突然變為非線性輸出,進而符合人類的認知習慣。

下面來看一個激活函數長的樣子。常見的激活函數還有Sigmoid函數、Tanh函數等等,這裡不做介紹。

ReLU激活函數

2、欠擬合及過擬合

如果神經網絡節點過少、網絡層少、訓練數據少、使用函數等因素,造成數據結果不準確。在使用該網絡時,就會造成識別錯誤率高等問題。這種現象叫欠擬合,可以通過增大相關參數的值來調整。

如果上述參數因素都合適,參數調整堪稱"完美",在使用該網絡時,也有可能出現識別錯誤高等問題。這種現象叫過擬合,可以通過以下在網絡中隨機減少節點,進行訓練。

正常神經網絡
隨機drop掉節點之後的網絡

但一般而言,過擬合的問題要好於欠擬合,因為過擬合可能通過隨機減少節點(其實還有很多中方式)等方式方便的調整。

3、深入優化

實際應用中,一般神經網絡輸入層(第一層)和輸出層(最後一層)的節點個數是固定的,但中間網絡的層數和每層的節點個數是根據實際情況確定的。

神經網絡優化的維度:

a、增加樣本數據量和樣本數據種類,如在本示例中增加狗貓照片的數量及增加兔子、老鼠等動物種類。這也是為什麼大數據在神經網絡、人工智慧等領域流行的原因了。

b、增加網絡層及每層的節點,優化激活等類型(還有損失函數、優化器函數等)的函數

c、增加訓練次數、測試擬合等等

c、神經網絡的遷移疊加,即在已建好的神經網絡上構建新的神經網絡,這就更複雜了。

五、神經網絡的本質

剛開始學習神經網絡時可能需要學習很多概念,像隨機深林、決策樹、支持向量機等等,太多了。這裡面有許多數學公式,看看就頭大,感覺學好神經網絡遙遙無期。

但神經網絡的本質,前面提到過,一元一次方程y=wx+b,就是求w(權重),b(偏移量)組成的矩陣。這個矩陣現階段人類不可讀,因為它的維度及每個維度的長度都是神經網絡自己組建的。這也和生物神經網絡類似,至今人類無法將生物神經網絡解析清楚。

本文為神經網絡算法簡單入門介紹。若有不足,還望批評指正!

相關焦點

  • 《Python程式設計師面試算法寶典》PDF超清版開源了文末附下載方式
    、分類歸納,提煉出算法面試的各種應對技巧,是一本Python程式設計師算法面試的圖書寶典。√ 採用抽絲剝繭式分析,深入解釋計算機科學的底層邏輯——算法及原理。√ 包括60多個算法題目,針對性強,拿來就用。通過實戰學習解題思路。《Python程式設計師面試寶典》是一本介紹Python程式設計師面試的圖書寶典。
  • 神經網絡算法原理_神經網絡算法的應用_神經網絡算法實例說明
    神經網絡是一種模擬人腦結構的算法模型。其原理就在於將信息分布式存儲和並行協同處理。雖然每個單元的功能非常簡單,但大量單元構成的網絡系統就能實現非常複雜的數據計算,並且還是一個高度複雜的非線性動力學習系統。   神經網絡的結構更接近於人腦,具有大規模並行、分布式存儲和處理、自組織、自適應和自學能力。
  • 程式設計師面試通關的 101 道真題
    在程式設計師的職業生涯中,無論是在跳槽時還是晉升時都會遇到各式各樣的面試,那麼就技術層面上而言,面試有哪些寶典秘籍可供參考,希望本文的 101 道真題能給你幫助。作者 | javinpaul,Java程式設計師譯者 | 彎月,責編 | 屠敏以下為譯文:對程式設計師來說,編程面試有著非凡的意義。
  • 模式識別與機器學習(教學大綱)|向量|貝葉斯|算法|神經網絡_網易訂閱
    首先介紹貝葉斯學習基礎、邏輯回歸、概率圖模型基礎、隱馬爾可夫模型和條件隨機場,接著介紹支持向量機、人工神經網絡與深度學習、高斯過程、聚類、主成分分析與相關的譜方法,最後介紹確定性近似推理、隨機近似推理和強化學習。附錄包括傳統的模式識別與機器學習方法,即近鄰法和決策樹,還有向量微積分和隨機變量的變換等與本學科強相關的重要知識點。
  • 算法之「算法」:所有機器學習算法都可以表示為神經網絡
    圖源:unsplash大概從20世紀50年代的早期研究開始,機器學習的所有工作就都是隨著神經網絡的創建積累而來的。隨後出現了一個又一個新算法,從邏輯回歸到支持向量機。但是眾所周知,神經網絡是算法的算法及機器學習的巔峰。
  • 訓練神經網絡的五大算法
    訓練神經網絡的五大算法 Alberto Quesada 發表於 2017-11-16 15:30:54   神經網絡模型的每一類學習過程通常被歸納為一種訓練算法。
  • C#與人工智慧(第3講)創建神經網絡
    通過前面兩講,大家已經學會安裝Visual Studio 2019編碼工具、創建WinForm應用程式。C#與人工智慧(第1講)安裝C#編程環境C#與人工智慧(第2講)創建WinForm程序神經網絡從本講開始,正式講述人工智慧編程。#人工智慧#筆者不想講述太多理論,而是側重於實際應用開發。對理論感興趣的讀者,建議去參考書籍《神經網絡與機器學習》,這本書非常經典。
  • 五分鐘學編程:怎樣才能學好筆試面試最愛考察的算法
    本文思維導圖什麼是算法上回我們有一篇文章,講述了作為一個新人程式設計師,如何學習數據結構這門課程,其實呢,數據結構和算法是息息相關的,為什麼這麼說呢,因為數據結構本身只是一個載體,而在數據結構之上產生作用和輸出價值的東西其實是算法。
  • 什麼是人工神經網絡(ANN)?
    作者 | Ben Dickson編譯 | CDA數據分析師過去十年中最具影響力的技術之一是人工神經網絡,它是深度學習算法的基本組成部分,是人工智慧的前沿。人工神經元的結構,人工神經網絡的基本組成部分(來源:維基百科)從本質上講,這聽起來像是一個非常瑣碎的數學運算。但是,當您將成千上萬的神經元多層放置並堆疊在一起時,您將獲得一個人工神經網絡,可以執行非常複雜的任務,例如對圖像進行分類或識別語音。
  • 人工神經網絡(Artificial Neural Network)算法簡介
    人工神經網絡,簡稱神經網絡,是一種模仿生物神經網絡的結構和功能的數學模型或者計算模型。其實是一種與貝葉斯網絡很像的一種算法。之前看過一些內容始終雲裡霧裡,這次決定寫一篇博客。
  • 程式設計師面試題,200億個數字找中位數,不給分桶算法,怎麼辦?
    海量數據裡面如何尋找一堆數字的中位數,是一道非常常見的面試題。據稱,這個題目是騰訊前首席技術執行官Tony推崇的一個面試題,被加入的騰訊的面試題題庫。今天我們就來討論下這個題目,有一個存放著200億個數字的文件,存放著32位整型,可能會有重複的數字,現在想從這堆數字中找到他們的中位數。
  • 盤點| 機器學習入門算法:從線性模型到神經網絡
    原標題:盤點 | 機器學習入門算法:從線性模型到神經網絡 選自Dataconomy 機器之心編譯 參與:王宇欣、吳攀、蔣思源答案很簡單:算法(algorithm)。 機器學習是人工智慧(artificial intelligence)的一種,其本質上講,就是計算機可以在無需編程的情況下自己學習概念(concept)。這些電腦程式一旦接觸新的數據,就將會改變它們的「思考」(或者輸出)。為了實現機器學習,算法是必需的。算法被寫入計算機並在其剖析數據時給與其需要遵循的規則。
  • 機器學習算法盤點:人工神經網絡、深度學習
    常見算法有邏輯回歸(Logistic Regression)和反向傳遞神經網絡(Back Propagation Neural Network)   非監督式學習:      算法類似性   根據算法的功能和形式的類似性,我們可以把算法分類,比如說基於樹的算法,基於神經網絡的算法等等。當然,機器學習的範圍非常龐大,有些算法很難明確歸類到某一類。而對於有些分類來說,同一分類的算法可以針對不同類型的問題。這裡,我們儘量把常用的算法按照最容易理解的方式進行分類。
  • Java程式設計師需要什麼學歷才能找到工作?學歷低怎麼辦?
    IT行業薪資很高,很多人只看到了這點,沒發現非常多的人也奔著想拿高薪的念頭往這個行業擠,這麼多人,企業當然要高個子中挑更高的了各種限制也因此而來,學歷,工作經驗,掌握的技能等等Java程式設計師需要什麼學歷才能找到工作?
  • 高效「背誦」面試題的三定法則
    程式設計師求職時,在準備階段都要「背誦」大量的技術面試題,以應對各路精明面試官的百般折磨。 這裡我把「背誦」一詞加上了引號,意指此處的「背誦」可不是一般的背誦。如果你以為我要教你過目不忘記的背誦技巧,那可能會讓你失望了。 請允許我先自賣自誇一波。
  • 50%是招聘,50%是培訓,100%是程式設計師
    程式設計師水平究竟如何,與崗位要求是否契合,不一定能通過面試環節檢驗出來。 在美國,亞馬遜、Facebook等公司已在採用一種新的程式設計師招聘方式,更注重「技能優先」,考察面試者在算法、數據結構方面的功底,而不是「簡歷優先」。在這種模式下,企業會對應聘者進行在線測評、白板面試等多種形式的技術能力評估,佔比達到了整個環節的70%,這其中主要使用了力扣的題目。
  • 算法工程師路線圖(經驗濃縮,純乾貨!)
    說起算法(Algorithm),需要值得注意的是,數據結構與算法,機器學習算法都可簡稱為算法,但兩者是完全不同的。數據結構與算法是計算機科學中的一門基礎課程,主要內容是關於如何設計電腦程式,使得程序能夠運行更快,佔用內存更少。通常所說的程式設計師面試要刷算法題,指的便是數據結構與算法中的算法。
  • 算法中的微積分:5大函數求導公式讓你在面試中脫穎而出
    事實上,所有機器學習算法的本質都是數學問題,無論是支持向量機、主成分分析還是神經網絡最終都歸結為對偶優化、譜分解篩選和連續非線性函數組合等數學問題。只有徹底理解數學,才能正真掌握這些機器學習算法。Python中的各種資料庫能幫助人們利用高級算法來完成一些簡單步驟。
  • 深度學習:神經網絡算法的昨天、今天和明天
    相反,它的工作完全依賴於人類對算法的設計。深度學習從誕生到爆發用了大約五十年。從其發展歷程,我們可以窺見計算機科學家們的步步巧思,並從中探討其可能的發展方向。一、什麼是深度學習深度學習就是人工神經網絡(Artificial Neural Network)。神經網絡算法得名於其對於動物神經元傳遞信息方式的模擬,而深度學習這一「俗稱」又來自於多層級聯的神經元:眾多的層讓信息的傳遞實現了「深度」。
  • 機器學習算法匯總:人工神經網絡、深度學習及其它
    算法類似性根據算法的功能和形式的類似性,我們可以把算法分類,比如說基於樹的算法,基於神經網絡的算法等等。當然,機器學習的範圍非常龐大,有些算法很難明確歸類到某一類。而對於有些分類來說,同一分類的算法可以針對不同類型的問題。這裡,我們儘量把常用的算法按照最容易理解的方式進行分類。