1. AI 不過就是問個好問題
  2. AI到底能幹什麼?
  3. AI會取代我們?
    1. 新工作會產生
  4. 自駕必然會實現
  5. 現在的AI是神經網路
  6. 將問題化為函數
    1. 然後用深度學習找到這個函數
    2. x->f->y
  7. 函數其實是個解答本
    1. 所有的問題,都有個答案
    2. 我們想要問個好的問題
    3. 生活上或工作上遇到的問題
    4. EX:在野外看到一隻動物,我想知道是什麼?
      1. 拍照想要有答
      2. 我們有部份解答/
      3. 但我們還沒碰過的情況可能有無限多題(各種不同的狀況跟情境)
      4. 但希望能透過收集到的資料把不同的狀況都能解答
      5. 我們把問題化成函數
        1. 熊—>f—>台灣黑熊
    5. 用神經網路的深度學習找出完整的函數
      1. 統計的線性回歸
    6. 深度學習(神經網路三大天王)
      1. NN
      2. CNN
      3. RNN
    7. 流程
      1. 1。我們先問一個問題
        1. EX:在野外看到一隻動物,我想知道是什麼?
        2. 要有很多DATA可以收集
      2. 2。我們把問題化成函數
        1. 熊—>f—>台灣黑熊
        2. 所有的問題DATA可以產生連結
      3. 3。準備訓練資料
        1. 找出考古題
        2. 過去的DATA
        3. 訓練資料
          1. 我們設定給AI的資料
          2. 相當於考古題
          3. 一開始學習時用的資料
        4. 測試資料
          1. 相當於考試用的DATA
      4. 4。架構我們的神經網路
        1. NN
        2. CNN
        3. RNN
          1. VAE(膠
        4. 強化學習
        5. 生成對抗模式
        6. 架好了神經網路,就剩一些參數要調
          1. @={Wi,bj}
          2. 決定好這些參數的值
      5. 5。學習
        1. 學習用訓練資料送進
          1. loss function(L@)
        2. 基本上用gradient descent
        3. 因神經網路的特性backpropagation
      6. EX我想知道某股票明天的股價
        1. 日期X—>f—>某骰票X當天的收盤價
        2. 但日期X的資料(input)幾乎沒有任何可以用來判斷知道f函數的地方
        3. Xt-1,Xt-2,Xt-3-->f(NN,CNN,RNN)-->Xt
      7. EX 我想知道某MLB球員2018可以打多少全壘打
        1. 15個feature!
        2. 第t-1年資料-->f(RNN)-->第t年全壘打數
        3. 不準後
          1. 改猜區間而不是猜精確的數目
          2. 分五段
          3. 0-9
      8. EX:對話機器人
        1. 目前的字-->f(RNN)-->下一個字
          1. RNN會把上一次的字都一起輸入進來
        2. 實作上困難點與問題
          1. 客戶一次說話的字數是不同的
        3. 每次的輸入跟輸出都不是固定的長度
      9. EX:我們讓AI自已玩遊戲(開車,泡咖啡)
        1. 打磚塊--->#(CNN+NN)-->最好的動作
          1. 輸入很多張截圖
          2. 輸入一種完整的狀況
          3. 函數告訴我們要往左還往右
          4. 難點在要玩無數次的遊戲才能收集到足夠的資料
          5. 但很多時候不知道下一動的動作往那裡最好?
          6. 所以Model改成
          7. Reinforcememt Learning : 打磚塊圖(+往左)--->Q()-->評分
          8. 重新問一個問題
      10. EX:我們
      11. 所以問題是否問的好很重要 (AI最重要最核心也是最難被取代的)
        1. 要怎麼問?
        2. 我們想解決的問題, 可能有許多種不同的問法
        3. 要問什麼樣的問題?
        4. 要用什麼方式來解決問題的MODEL?
        5. 有什麼資料能用?
        6. 能拿到什麼資料?
        7. 資料的關連性是什麼?
        8. 電腦自已寫神經網路?
      12. 記得我們就是要學個函數
        1. 現在的AI主軸是深度學習
        2. 深度學習的核心是神經網路
        3. 用一堆的X輸入-->f-->得到一堆的y出來
        4. 函數學習三部曲
          1. 真實世界要問的問題化做函數
          2. 通常很難問對問題
          3. 收集我們知道"正確答案"的訓練資料
          4. 資料清理通常最花時間
          5. 找出這個函數
      13. 暗黑學習法
        1. 真的有學任意函數的技法
        2. 就是神經網路
        3. 在1980到1990是很潮的東西
        4. 厲害的神經網路什麼都學的會
        5. (Xn)Input layer-->(f)Hidden layer-->(Yn)out layer
        6. 然後它就死掉了 (因為三大要件不足)
          1. 1.複雜的軟體
          2. 2.電腦算力
          3. 3.BIG DATA
      14. DeepMind
        1. 用電腦玩遊戲
          1. 無人駕駛
          2. 宇宙探測
        2. Alpha go
        3. Deeplearning
      15. Deep learning (2015-5-28)
        1. Lecun
        2. Bengio
        3. Hinton
  8. 神經網路三大天王
    1. 不需要用神經網路處理線性曲線的問題
    2. NN
      1. 標準NN
      2. 最傳統型的神經網路
      3. 每一個都是神經元
      4. 2層的hidden layers
      5. 3層以上的hidden layers才能叫深度學習
      6. 問題問完時就知道X的維度
      7. 先知道hidden layerS有幾層
        1. 要知道每個隱藏層的神經元有幾個?
        2. 邏輯上如果比較複雜的, 通常會需要用到比較多層
      8. 標準的神經網路必需是Fully connection 完整的連結(完全連結)
      9. 資料送法必需是從前面往後送
      10. 每個神經元的動作都是一樣的
        1. 1.接收若干刺激輸入
        2. 2.送出一個刺激輸出(的數字),但可能會把同一個數字送給多個不同的神經元
      11. 我們要先算總刺激
        1. 人類的神經受到刺激時會輸出不同強度的訊號
        2. 模擬人類的刺激(用加權值作計算)
          1. X1*W1(權重值)
          2. 學習就是要學W要有多大
          3. 加上偏值(bias) b
          4. 激發函數
        3. 將輸入作加權和
        4. 加上偏值
        5. 再用activation functions激發函數作用上去即為輸出
        6. activation functions
          1. 不可以是線性曲線
        7. 著名的activation functions
          1. ReLU
          2. 最簡單
          3. 所以非常的有效率
          4. Sigmoid
          5. 最像人
          6. 1到0
          7. Gaussian
          8. 幾乎沒人在用高斯函數
      12. 變數就是Weights,biases
        1. 假設用ReLU
      13. 神經網路的訓練原理
        1. 1.神經網路需要經過訓練
        2. 王牌函數(誤差最小)
        3. 假設有多組的訓練資料_->希望能找出F@
        4. 最常用Loss function(L@)
          1. 我們希望它越小越好
          2. 每一次都去重算, 直到找到最好Loss function(L@)
          3. 用算距離的公式
          4. 基本上這樣調
          5. Learning rate
          6. L是w1,w,2,b1的函數
          7. 目標就是要調W跟B
          8. L希望是愈小愈好
          9. 電腦怎麼看出來要把W在A點的值往右走?
          10. 切線是關鍵
          11. 切線斜率<0時等於往左走(負的值)
          12. 切線斜率a<0加負值
          13. 切線斜率>0時等於往右走(負的值)
          14. 切線斜率a會求出(局部)的極大值
          15. dL=>切線斜率
          16. 切線就是作微分
          17. 被乘上很小的數字避免A位移的W值過大時修正位置過頭
          18. 目的是讓位移值變小
          19. Learaning Rate
          20. 相當於學習的速度
          21. 可以設每個參數的Learning rate
          22. 通常接近於0
          23. 振幅的影響?
          24. 因為斜率所以會自動等於可以計算振幅的斜率
          25. 朝同一方向避免太多繞路或在原地打轉
          26. 假設只有一個變數
          27. 偏微分就是只作一個變數的微分
          28. 同理, 其它變數都固定成常數,只對一個變數作微分
          29. 梯度(gradient)
          30. 看著切線斜率或梯度往下走或位移的方法就叫作 Gradient Descent(梯度下降)
    3. CNN
      1. 卷積神經網路
      2. Convolutional neural Network
      3. 圖型辨識的超級天王
      4. 應用
        1. 圖形辨視
        2. 自動駕駛
        3. 遊戲AI
      5. 概念
        1. 看一個特徵時
          1. 掃過每一個點,記錄該點附近的"特徵強度"
          2. 例如該點附近的特徵強度
          3. 對應直線 特徵強度的資訊
          4. 對應橫線 特徵強度的資訊
          5. 對應各種特徵強度的資訊
          6. 作成一個完整特徵矩陣的資訊
          7. 矩陣是看某一種特性
          8. 想看的特徵資訊愈多矩陣就愈大
          9. 學習的特徵(EX直線)為何是由AI自已學習的
          10. W=Filter
          11. 等於W的加權和
          12. CNN的第一層=W矩陣
          13. 並沒有fully counection
        2. 基本上就是投票
          1. 在每一區中投出最大的矩陣
          2. max-pooling
          3. 投票的目的是希望能縮小資料
          4. 第二次再REPEAT時,就是將特徵矩陣作更細微的辨視
        3. 可以不斷的重覆
          1. Convolutional
          2. max-pooling
          3. 通常都是複合型的
        4. 做完再送到"正常的"神經網路
    4. Q&A
      1. 什麼時候要人為調整?
        1. 學習速度太慢時
        2. 學不出來時
        3. 要用多少神經元
        4. 要用多少hidden層?
        5. 各種W,B值的微調時
    5. RNN
      1. 有記憶的神經網路
      2. 也就是輸入的順序變了,輸出還是一樣的
      3. RNN會偷偷把上一次的輸出也當這一次的輸入
      4. t-1鄰居,上一次送出資料的
      5. 所以輸入源會增加2個
      6. 前後的資料有關聯性的回應
      7. 適合處理有時間序列的問題
      8. 同樣型式的應用
        1. 最常使用的是對話機器人
          1. 因為記得前面發生的事
        2. 翻譯
        3. 生成一段文字
          1. 固定的格式
          2. 特定的規則
        4. 畫一半的圖完成它
        5. Video Captioning生成影片敍述
          1. EX:1個人走在海邊牽一隻狗
      9. 代數幾何-介紹"stacks"
      10. 對同一層的第K個CELL就有一個輸出
      11. 大部份用在很長的
        1. Lstm
          1. Long shot term memory
          2. 會有控制閥
          3. 把以前沒用的資枓
          4. 由閥來控制
          5. 三個GATE
          6. 輸入門
          7. 輸出門
          8. 忘記門
        2. GRU記憶門
          1. input 可不考慮從前
          2. 比Lstm簡單一些
      12. 一般來說講RNN時就是指用LSTM, or GRU
      13. 原始的RNN=SimpleRNN ,Vanilla RNN
  9. Standford d.scholl風的設計思考步驟
    1. 同理
    2. 定義
    3. 發想
    4. 原型
    5. 測試
  10. EX 我想知道某MLB球員2018可以打多少全壘打
    1. 15個feature!
    2. 第t-1年資料-->f(RNN)-->第t年全壘打數
    3. 不準後
      1. 改猜區間而不是猜精確的數目
        1. 分五段
        2. 0-9
        3. 10-19
        4. 20-29
      2. 運用LSTM ,輸入10年的資料猜下一層
      3. 只有一層LSTM
      4. One-hot encoding
        1. 0
          1. 0-9
        2. 1
          1. 10-19
        3. 0
          1. 20-29
        4. 0
          1. 30-39
        5. 0
          1. 40-49
  11. 超展開的問問題方式
    1. 神經網路的解決問題的想法
    2. 生成對抗模式(GAN)
      1. 生成對抗網路GAN
        1. Generative Adversarial Network
      2. Noise(隨機生出的亂數值)
        1. 生成器(G)Generator
          1. (D)鑑別器discriminator
          2. X 真的
          3. G( z)假的
      3. GAN是兩個神經網路, 一個生成, 一個判斷, 相互對抗
        1. 生成器希望能騙過電腦(希望被判斷成1)
        2. 鑑別器希望的是0,能判斷圖是假的(希望判斷成0)
        3. 打罵教育
          1. 正確加分
          2. 失敗就扣分
        4. ex: iGAN
        5. EX:Progressive GAN(NVIDIA)
          1. 目標產生明星照片
        6. EX:Pix2pix
          1. 把衛星圖變地圖
          2. input 衛星圖
          3. output 地圖
          4. 隨手畫畫變街景
          5. 畫貓
        7. CycleGAN
          1. 2個GAN
          2. Domain A
          3. Domain B
          4. 用Gan把男生照片INPUT輸出女生OUTPUT
          5. 再把生出的女生照片input輸出成男生照片而且要跟原本的照片相似
          6. 將馬變成班馬
          7. Goodfellow關注的變臉
        8. 類似CycleGAN
          1. 用CycleGAN作翻譯
          2. 讓英文變中文, 再讓中文變英文
      4. 稱之為最有潛力的Model
      5. 第一個非監督式的學習
      6. 圖靈問題: 如果用無限打字機跟對方溝通, 有沒有辦法判斷對方是機器人跟他對話?(圖靈測試)
    3. 強化學習
      1. Alphago
        1. 2016年4:1擊敗世界棋王
        2. 2017年10月完全自學的人工智慧, 擊敗之前版本
        3. Netflix 記錄片 Alphago
      2. 黃士傑傅士
      3. 原理
        1. 電腦
        2. 動作
        3. 環境
        4. 獎勵
      4. 1.Policy Based
        1. 狀態St
        2. Policy function(pi)
        3. 左 or 右 (動作At)
      5. 2.Value Based
        1. 狀態+動作
        2. Value Function(Q)
        3. 評分(通常估計Reward)
        4. 由電腦玩很多次的經驗自已生出來的目標
      6. ETF股票自動交易
        1. 過去20天的資料
        2. 20X6的矩陣
          1. F
          2. 五種actions
          3. 1
          4. 2
          5. 3
          6. 4
          7. 5
        3. 用CNN的方式作(當成是圖)
        4. 跟無腦法比較(買入持有策略)
  12. 深度學習心法
    1. 要去思考不同的方法或角度去思考的問題?
    2. 深度學習就是要學一個函數
    3. 深度學習有什麼特別?
      1. 1.通常數據量大時,深度學習效果比較好(甚至於只有深度學習可以學)
      2. 2.要相信神經網路學的會
      3. 3.學不好的時候要去想一下正規化的作法(Regularization)
        1. Drop out
          1. 十個問題給十個同學,可能會一人背一題
          2. 避免背題狀況/overfiting 的狀況
          3. 讓所有的同學都得背(3位同學出去)
        2. L1/L2 regularization
        3. SELU
      4. 4.走向[強]人工智慧
  13. 深度學習環境
    1. Python
      1. 1991創
      2. 簡單,全方位,社群強大的程式語言
      3. 幾乎成為資料分析的No.1
      4. Python3
        1. install 3.6
        2. 使用jupyter notebook(JupyterLab)網頁型式的開發平台
        3. Anaconda (python3大補貼)
        4. 數據分析團隊
          1. Numpy數值運算
          2. Matplotlib畫圖高手
          3. Pandas資料清理
          4. Scikit Learn機器學習
        5. 深度學習:建議(Keras)套件
          1. Tenorflow
          2. Theano
          3. CNTK
      5. Pytorch另一個值得注意的框架
      6. 遲早要考慮的GPU
    2. 使用jupyter notebook(JupyterLab)網頁型式的開發平台(免安裝)
      1. Google CoLab
      2. CoCalc
      3. Azure Notebook
    3. 政大磨克師
      1. Moocs.nccu.edu.tw
      2. fb.me/yenlung
  14. Q&A
    1. LSTM
    2. MODEL一開始會錯的原因?
      1. TRAIN次數不對
      2. 需求沒有用
      3. 問錯問題或問的問題方向有誤
      4. 訓練的方式有問題TRAIN不起來
      5. Lost funtion一直降不下來
      6. 訓練資料太小
      7. 各種可能錯的地方
    3. 傳統的CNN,RNN
      1. 所有的資料最好都還是要作一些資料整理
      2. normalization或圖像化
      3. 一般該作的資料處理都要作
    4. 鑑別器跟生成器
      1. 是輪流訓練
      2. 通常兩者架構不一樣, 通常鑑別器的MODEL比較大也比較厲害
      3. 通常設計的方式不一樣,因為目標是不一樣的
      4. 同樣的MODEL是可以用來生其它不同類但同質的圖像(但應該需要重新訓練)
      5. 可以拿生成器去生出學習資料
    5. 基本的訓練資料量
      1. 上萬是很正常的數據量
      2. 圖片至少要上千張