- 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
- 有記憶的神經網路
- 也就是輸入的順序變了,輸出還是一樣的
- RNN會偷偷把上一次的輸出也當這一次的輸入
- t-1鄰居,上一次送出資料的
- 所以輸入源會增加2個
- 前後的資料有關聯性的回應
- 適合處理有時間序列的問題
-
同樣型式的應用
-
最常使用的是對話機器人
- 因為記得前面發生的事
- 翻譯
-
生成一段文字
- 固定的格式
- 特定的規則
- 畫一半的圖完成它
-
Video Captioning生成影片敍述
- EX:1個人走在海邊牽一隻狗
- 代數幾何-介紹"stacks"
- 對同一層的第K個CELL就有一個輸出
-
大部份用在很長的
-
Lstm
- Long shot term memory
- 會有控制閥
- 把以前沒用的資枓
- 由閥來控制
- 三個GATE
- 輸入門
- 輸出門
- 忘記門
-
GRU記憶門
- input 可不考慮從前
- 比Lstm簡單一些
- 一般來說講RNN時就是指用LSTM, or GRU
- 原始的RNN=SimpleRNN ,Vanilla RNN
-
Standford d.scholl風的設計思考步驟
- 同理
- 定義
- 發想
- 原型
- 測試
-
EX 我想知道某MLB球員2018可以打多少全壘打
- 15個feature!
- 第t-1年資料-->f(RNN)-->第t年全壘打數
-
不準後
-
改猜區間而不是猜精確的數目
- 分五段
- 0-9
- 10-19
- 20-29
- 運用LSTM ,輸入10年的資料猜下一層
- 只有一層LSTM
-
One-hot encoding
-
0
- 0-9
-
1
- 10-19
-
0
- 20-29
-
0
- 30-39
-
0
- 40-49
-
超展開的問問題方式
- 神經網路的解決問題的想法
-
生成對抗模式(GAN)
-
生成對抗網路GAN
- Generative Adversarial Network
-
Noise(隨機生出的亂數值)
-
生成器(G)Generator
- (D)鑑別器discriminator
- X 真的
- G( z)假的
-
GAN是兩個神經網路, 一個生成, 一個判斷, 相互對抗
- 生成器希望能騙過電腦(希望被判斷成1)
- 鑑別器希望的是0,能判斷圖是假的(希望判斷成0)
-
打罵教育
- 正確加分
- 失敗就扣分
- ex: iGAN
-
EX:Progressive GAN(NVIDIA)
- 目標產生明星照片
-
EX:Pix2pix
- 把衛星圖變地圖
- input 衛星圖
- output 地圖
- 隨手畫畫變街景
- 畫貓
-
CycleGAN
- 2個GAN
- Domain A
- Domain B
- 用Gan把男生照片INPUT輸出女生OUTPUT
- 再把生出的女生照片input輸出成男生照片而且要跟原本的照片相似
- 將馬變成班馬
- Goodfellow關注的變臉
-
類似CycleGAN
- 用CycleGAN作翻譯
- 讓英文變中文, 再讓中文變英文
- 稱之為最有潛力的Model
- 第一個非監督式的學習
- 圖靈問題: 如果用無限打字機跟對方溝通, 有沒有辦法判斷對方是機器人跟他對話?(圖靈測試)
-
強化學習
-
Alphago
- 2016年4:1擊敗世界棋王
- 2017年10月完全自學的人工智慧, 擊敗之前版本
- Netflix 記錄片 Alphago
- 黃士傑傅士
-
原理
- 電腦
- 動作
- 環境
- 獎勵
-
1.Policy Based
- 狀態St
- Policy function(pi)
- 左 or 右 (動作At)
-
2.Value Based
- 狀態+動作
- Value Function(Q)
- 評分(通常估計Reward)
- 由電腦玩很多次的經驗自已生出來的目標
-
ETF股票自動交易
- 過去20天的資料
-
20X6的矩陣
- F
- 五種actions
- 1
- 2
- 3
- 4
- 5
- 用CNN的方式作(當成是圖)
- 跟無腦法比較(買入持有策略)
-
深度學習心法
- 要去思考不同的方法或角度去思考的問題?
- 深度學習就是要學一個函數
-
深度學習有什麼特別?
- 1.通常數據量大時,深度學習效果比較好(甚至於只有深度學習可以學)
- 2.要相信神經網路學的會
-
3.學不好的時候要去想一下正規化的作法(Regularization)
-
Drop out
- 十個問題給十個同學,可能會一人背一題
- 避免背題狀況/overfiting 的狀況
- 讓所有的同學都得背(3位同學出去)
- L1/L2 regularization
- SELU
- 4.走向[強]人工智慧
-
深度學習環境
-
Python
- 1991創
- 簡單,全方位,社群強大的程式語言
- 幾乎成為資料分析的No.1
-
Python3
- install 3.6
- 使用jupyter notebook(JupyterLab)網頁型式的開發平台
- Anaconda (python3大補貼)
-
數據分析團隊
- Numpy數值運算
- Matplotlib畫圖高手
- Pandas資料清理
- Scikit Learn機器學習
-
深度學習:建議(Keras)套件
- Tenorflow
- Theano
- CNTK
- Pytorch另一個值得注意的框架
- 遲早要考慮的GPU
-
使用jupyter notebook(JupyterLab)網頁型式的開發平台(免安裝)
- Google CoLab
- CoCalc
- Azure Notebook
-
政大磨克師
- Moocs.nccu.edu.tw
- fb.me/yenlung
-
Q&A
- LSTM
-
MODEL一開始會錯的原因?
- TRAIN次數不對
- 需求沒有用
- 問錯問題或問的問題方向有誤
- 訓練的方式有問題TRAIN不起來
- Lost funtion一直降不下來
- 訓練資料太小
- 各種可能錯的地方
-
傳統的CNN,RNN
- 所有的資料最好都還是要作一些資料整理
- normalization或圖像化
- 一般該作的資料處理都要作
-
鑑別器跟生成器
- 是輪流訓練
- 通常兩者架構不一樣, 通常鑑別器的MODEL比較大也比較厲害
- 通常設計的方式不一樣,因為目標是不一樣的
- 同樣的MODEL是可以用來生其它不同類但同質的圖像(但應該需要重新訓練)
- 可以拿生成器去生出學習資料
-
基本的訓練資料量
- 上萬是很正常的數據量
- 圖片至少要上千張