-
上午(AI 不過就是問個好問題
- AI到底能幹什麼?
-
AI會取代我們?
- 新工作會產生
- 自駕必然會實現
- 現在的AI是神經網路
-
將問題化為函數
- 然後用深度學習找到這個函數
- x->f->y
-
函數其實是個解答本
- 所有的問題,都有個答案
- 我們想要問個好的問題
- 生活上或工作上遇到的問題
-
EX:在野外看到一隻動物,我想知道是什麼?
- 拍照想要有答
- 我們有部份解答/
- 但我們還沒碰過的情況可能有無限多題(各種不同的狀況跟情境)
- 但希望能透過收集到的資料把不同的狀況都能解答
-
我們把問題化成函數
- 熊—>f—>台灣黑熊
-
用神經網路的深度學習找出完整的函數
- 統計的線性回歸
-
深度學習(神經網路三大天王)
- NN
- CNN
- RNN
-
流程
-
1。我們先問一個問題
- EX:在野外看到一隻動物,我想知道是什麼?
- 要有很多DATA可以收集
-
2。我們把問題化成函數
- 熊—>f—>台灣黑熊
- 所有的問題DATA可以產生連結
-
3。準備訓練資料
- 找出考古題
- 過去的DATA
- 訓練資料
- 我們設定給AI的資料
- 相當於考古題
- 一開始學習時用的資料
- 測試資料
- 相當於考試用的DATA
-
4。架構我們的神經網路
- NN
- CNN
- RNN
- VAE(膠
- 強化學習
- 生成對抗模式
- 架好了神經網路,就剩一些參數要調
- @={Wi,bj}
- 決定好這些參數的值
-
5。學習
- 學習用訓練資料送進
- loss function(L@)
- 基本上用gradient descent
- 因神經網路的特性backpropagation
-
EX我想知道某股票明天的股價
- 日期X—>f—>某骰票X當天的收盤價
- 但日期X的資料(input)幾乎沒有任何可以用來判斷知道f函數的地方
- Xt-1,Xt-2,Xt-3-->f(NN,CNN,RNN)-->Xt
-
EX 我想知道某MLB球員2018可以打多少全壘打
- 15個feature!
- 第t-1年資料-->f(RNN)-->第t年全壘打數
- 不準後
- 改猜區間而不是猜精確的數目
- 分五段
- 0-9
-
EX:對話機器人
- 目前的字-->f(RNN)-->下一個字
- RNN會把上一次的字都一起輸入進來
- 實作上困難點與問題
- 客戶一次說話的字數是不同的
- 每次的輸入跟輸出都不是固定的長度
-
EX:我們讓AI自已玩遊戲(開車,泡咖啡)
- 打磚塊--->#(CNN+NN)-->最好的動作
- 輸入很多張截圖
- 輸入一種完整的狀況
- 函數告訴我們要往左還往右
- 難點在要玩無數次的遊戲才能收集到足夠的資料
- 但很多時候不知道下一動的動作往那裡最好?
- 所以Model改成
- Reinforcememt Learning : 打磚塊圖(+往左)--->Q()-->評分
- 重新問一個問題
- EX:我們
-
所以問題是否問的好很重要
(AI最重要最核心也是最難被取代的)
- 要怎麼問?
- 我們想解決的問題, 可能有許多種不同的問法
- 要問什麼樣的問題?
- 要用什麼方式來解決問題的MODEL?
- 有什麼資料能用?
- 能拿到什麼資料?
- 資料的關連性是什麼?
- 電腦自已寫神經網路?
-
記得我們就是要學個函數
- 現在的AI主軸是深度學習
- 深度學習的核心是神經網路
- 用一堆的X輸入-->f-->得到一堆的y出來
- 函數學習三部曲
- 真實世界要問的問題化做函數
- 通常很難問對問題
- 收集我們知道"正確答案"的訓練資料
- 資料清理通常最花時間
- 找出這個函數
-
暗黑學習法
- 真的有學任意函數的技法
- 就是神經網路
- 在1980到1990是很潮的東西
- 厲害的神經網路什麼都學的會
- (Xn)Input layer-->(f)Hidden layer-->(Yn)out layer
- 然後它就死掉了
(因為三大要件不足)
- 1.複雜的軟體
- 2.電腦算力
- 3.BIG DATA
-
DeepMind
- 用電腦玩遊戲
- 無人駕駛
- 宇宙探測
- Alpha go
- Deeplearning
-
Deep learning
(2015-5-28)
- Lecun
- Bengio
- Hinton
-
神經網路三大天王
- 不需要用神經網路處理線性曲線的問題
-
NN
- 標準NN
- 最傳統型的神經網路
- 每一個都是神經元
- 2層的hidden layers
- 3層以上的hidden layers才能叫深度學習
- 問題問完時就知道X的維度
-
先知道hidden layerS有幾層
- 要知道每個隱藏層的神經元有幾個?
- 邏輯上如果比較複雜的, 通常會需要用到比較多層
- 標準的神經網路必需是Fully connection 完整的連結(完全連結)
- 資料送法必需是從前面往後送
-
每個神經元的動作都是一樣的
- 1.接收若干刺激輸入
- 2.送出一個刺激輸出(的數字),但可能會把同一個數字送給多個不同的神經元
-
我們要先算總刺激
- 人類的神經受到刺激時會輸出不同強度的訊號
- 模擬人類的刺激(用加權值作計算)
- X1*W1(權重值)
- 學習就是要學W要有多大
- 加上偏值(bias) b
- 激發函數
- 將輸入作加權和
- 加上偏值
- 再用activation functions激發函數作用上去即為輸出
- activation functions
- 不可以是線性曲線
- 著名的activation functions
- ReLU
- 最簡單
- 所以非常的有效率
- Sigmoid
- 最像人
- 1到0
- Gaussian
- 幾乎沒人在用高斯函數
-
變數就是Weights,biases
- 假設用ReLU
-
神經網路的訓練原理
- 1.神經網路需要經過訓練
- 王牌函數(誤差最小)
- 假設有多組的訓練資料_->希望能找出F@
- 最常用Loss function(L@)
- 我們希望它越小越好
- 每一次都去重算, 直到找到最好Loss function(L@)
- 用算距離的公式
- 基本上這樣調
- Learning rate
- L是w1,w,2,b1的函數
- 目標就是要調W跟B
- L希望是愈小愈好
- 電腦怎麼看出來要把W在A點的值往右走?
- 切線是關鍵
- 切線斜率<0時等於往左走(負的值)
- 切線斜率a<0加負值
- 切線斜率>0時等於往右走(負的值)
- 切線斜率a會求出(局部)的極大值
- dL=>切線斜率
- 切線就是作微分
- 被乘上很小的數字避免A位移的W值過大時修正位置過頭
- 目的是讓位移值變小
- Learaning Rate
- 相當於學習的速度
- 可以設每個參數的Learning rate
- 通常接近於0
- 振幅的影響?
- 因為斜率所以會自動等於可以計算振幅的斜率
- 朝同一方向避免太多繞路或在原地打轉
- 假設只有一個變數
- 偏微分就是只作一個變數的微分
- 同理, 其它變數都固定成常數,只對一個變數作微分
- 梯度(gradient)
- 看著切線斜率或梯度往下走或位移的方法就叫作 Gradient Descent(梯度下降)
-
CNN
- 卷積神經網路
- Convolutional neural Network
- 圖型辨識的超級天王
-
應用
- 圖形辨視
- 自動駕駛
- 遊戲AI
-
概念
- 看一個特徵時
- 掃過每一個點,記錄該點附近的"特徵強度"
- 例如該點附近的特徵強度
- 對應直線 特徵強度的資訊
- 對應橫線 特徵強度的資訊
- 對應各種特徵強度的資訊
- 作成一個完整特徵矩陣的資訊
- 矩陣是看某一種特性
- 想看的特徵資訊愈多矩陣就愈大
- 學習的特徵(EX直線)為何是由AI自已學習的
- W=Filter
- 等於W的加權和
- CNN的第一層=W矩陣
- 並沒有fully counection
- 基本上就是投票
- 在每一區中投出最大的矩陣
- max-pooling
- 投票的目的是希望能縮小資料
- 第二次再REPEAT時,就是將特徵矩陣作更細微的辨視
- 可以不斷的重覆
- Convolutional
- max-pooling
- 通常都是複合型的
- 做完再送到"正常的"神經網路
-
Q&A
-
什麼時候要人為調整?
- 學習速度太慢時
- 學不出來時
- 要用多少神經元
- 要用多少hidden層?
- 各種W,B值的微調時
- RNN