# 深度學習原理與實務 part.I ###### tags: `20200801` `DeepLearning` 蔡炎龍 政治大學應用數學系 ## 問題化為函數 (舉例的內容可能不太對,但可以比較容易了解) ### 古典AI法 給予一個「規則」,利用這個規則來判斷 ### 傳統機器學習 文章暗示他是中立客觀的(不會出現他是中立客觀這樣的關鍵詞),所以要找比較多的關鍵詞,會影響文章屬性的關鍵詞。 降維 => 把變數減少(會誤傷) 降維的方法 > 1. 用砍的,用數值的相關性,但是....會誤傷,因為有時候會資料的相關性是要把一群資料放在一起,才能處理。 > 2. 用PCA,找出比較重要的來做 機器學習會花很多時間來處理feature engineering ### 深度學習 自動的feature engineering 深度學習,會花比較多的時間來「問問題」,問題問對了,就可以讓機器自己學出來的解法是正確的 ### 小結 碰到一個問題,不同的AI有不同的方向去處理問題 > 中立客觀不一定是中立客觀 ## 問題化為函數 輸入輸出很清楚,這樣就結束了 > 函數其實是一個解答本,所有的問題,都有一個答案 由於電腦要算,所以輸入與輸出都只能是數字,數字才能算 我們只有部分函數的解答,然後利用這些資料與已知解答的函數來學習 ## 深度學習 (神經網路)三大天王 1.NN 全連結的神經網路 2.CNN 圖形辨識很強的神經網路 3.RNN 具有記憶功能的神經網路 > 化成一個函數的形式 要定義的很清楚,才能夠有解答 > 輸入的維度與輸出的維度要相同 知名套件tensorflow - 計算資料維度的轉換 [tensorflow](https://www.tensorflow.org/learn?hl=zh-tw) <- 超連結 假設輸出是整數,但出現小數該怎麼辦? (這樣的情形出現,是因為資料本身沒有連續性) 輸出改使用one-hot encoding(每次只有一個1) ### 3.準備訓練資料 收集資料是件快樂的事情,因為要花更多的時間 人類唸書的時候,不懂的東西就會背下來。 神經網路也會,也就是overfitting > 要注意的事情: > 1. 資料需要上萬筆(甚至更多) > 2. 資料是否在合理努力下可以取得的 深度學習要給一個初始值,這個起始值其實只要隨機的給就好。他就會自己跑了 ## 問問題的各種可能 函數的定義:就是一個解答本 > 函數不可以的是 > 1. 不可以沒有解答 > 2. 不可以出現兩個答案 #### 股價 日期->f(x)->日期,股價 雖然有數據,但不會有結果 要有足夠的資料,用不同的方式來問問題 看顯微照片,判斷有沒有病毒 --- #### 字型 (字型的案例,好像就是我們要做的事) (哎呦跟我們要做的很像哦) (看來要來留這個老師的聯絡方式,以後有問題可以問) --- #### 職棒 職棒的案例 有一些資料,其實不知道跟打全壘打有沒有關係 (用RNN) 跑出來了,但是不準 可以用預測區間的方式來解決 --- #### 對話機器人 想到用逐字去預測,但是會發生一對多的結果,不能成為函數 但改用RNN因為會把回憶當成一種輸入,可以達成結果。 EOS = End of sequence (序列的結尾) 一開始機器人會用輸入的文字來預測下一個應該回應的文字,一直到輸入的序列結束。機器人會回應第一個文字,但會再把第一個回應的文字拿來再做預測,然後產生回應。 --- #### 創作 生成對抗網路GAN 做兩個網路,一個去做創作,一個去做辨識 (感覺書法大師也是可以用GAN?) (是的,跟我這禮拜自己去閱讀的文章也是這樣說的) --- #### 玩遊戲 這是電腦自己去學的 意義在於當他在複雜的場域時,可以自己去學習 --- #### 小結 最重要的就是問問題!!! #### 標準的,沒辦法做的 我想要知道紅蘿蔔怎樣會長得最快 >沒有輸入、沒有輸出,也沒有函數 ## 神經網路 > 問問題會是最重要的事情,實務的人與技術的人問問題的方式不一樣。 > 在神經網路很紅的時候(1980-1990),因為它可以很強大的學習,不用寫函數、不用寫數學式,都可以學習 失敗的原因 > 1. 複雜的軟體 -> 參數太多、內容複雜,出了問題根本無從修起 > 2. 電腦計算能力不夠 > 3. 大量的數據 -> 記憶體不夠 現在可以成功,因為上面三個問題可以解決了! ### DeepMind 很愛寫論文的公司 ## 神經網路 NN 全連結的神經網路,每一個計算結果都會傳到下一個神經元,所以全部連在一起。 1. 決定要有幾層hidden layers 2. hidden layers 每一個隱藏層要決定有幾個神經元 3. 每一個神經元都要數字輸入進來(刺激),然後計算加權和X1W1+X2W2+...XnWn,這個W1,W2...Wn式學習來的。然後還要學習一個偏差值b,最後會產生一個輸出,傳到下一層的神經元的計算。 4. 但這樣的傳遞,只會是一個線性函數。所以會做一個轉換,使他變成非線性 - 激發函數 (activation function) ### 激發函數 1. ReLU 最常用的激發函數,這個世紀的王 小於0的時候,y=0,大於0的時候是y=x (大於0的時候還是線性函數) 2. Sigmoid 最接近人類的函數 3. Gaussian 上個世紀常用,現在不用了,套件已經不提供這個函數了 ### 歷史 上個世紀,神經網路大概只有一層二層,因為大概三層電腦也無法運算了。 邏輯比較多的,就要多幾層(3層或3層以上),邏輯少的就少層(1或2層) 這個世紀再講深度學習,都要超過3層以上才叫深度學習(沒意義的堅持,一個"我們不一樣"的概念) ## 神經網路的訓練方式 > 數學式寫希臘字母比較高大上 (讚) [color=#53db41] > [time=Sat, Aug 1, 2020 12:08 PM] > #### loss function 就是找正確答案yi與計算出來的結果F(xi)的距離(就是2個點之間的誤差), ### * 簡而言之,就是誤差越小越好 下一步就是簡化loss function > 就是在找L(w)這個function上的切線 > 做微分,找最小值 > > (A:下午開一個新的共筆) > (W:我下午就撤退了阿...) > (A:已羨慕) --- 前往[Part.II](https://hackmd.io/@EM091/B17fn_fWv)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up