講師:溫室蔡
機器學習[1]
棋類遊戲 | 圖像生成 | 自然語言 |
---|---|---|
AlphaGo (2016) | DALL-E (2021) | GPT-3 (2020) |
AlphaGo Zero (2017) | MidJourney (2022) | LaMDA (2022) |
AlphaZero (2018) | StableDiffusion (2022) | ChatGPT (2022) |
中文 | 演算法 | 人工智慧 | 機器學習 | 深度學習 |
---|---|---|---|---|
英文 | Algorithm | Artificial Intelligence (AI) |
Machine Learning (ML) |
Deep Learning (DL) |
定義 | 一套解決問題的流程 | 表現出智慧的人造機器 | 透過讓機器自己學習來達成人工智慧 | 使用神經網路來進行機器學習 |
範例 | 廣度優先搜尋 | 遊戲 NPC | 基因演算法 | AlphaGo |
訓練資料集包含
人工貼上的標籤
資料集不含標籤
只能從資料本身找出模式
讓機器根據環境進行決策
再依結果給予獎勵
從一堆已知的資料點
找出最能正確預測新資料的方程式
微分可以得到函數圖形的「斜率」
可以拿來找最大最小值(斜率為 0 處)
將線性回歸的損失函數
分別對兩個參數偏微分就可以了
將一堆分類好的資料點
找出能把它們分割的那條線
支撐向量
SVM 要在資料點不落入兩個超平面中間的條件下
使得兩個超平面有最大間隔
兩個超平面的間隔為
因此目標是「在 的條件下,
最小化 。」
其中 為資料點的「顏色」,值為 1 或 -1
「硬間隔」SVM 並不好分析,也難以用於真實資料
因此通常使用「軟間隔」,容許部分錯誤分類
此時可定義損失函數:
其中 可控制對錯誤分類的容許程度
SVM 的情況不太能像線性回歸那樣一步到位
但我們依然可以用偏微分求出梯度來更新參數
對於非線性問題(無法用一條直線分類的問題)
SVM 有時可以透過 Kernel 來解決
平視圖
使用 Kernel:二次方程式
平視圖
一堆沒有標籤的資料點
要機器自己把相近的分成一類
迭代更新 K 個群心
以把資料分成 K 類
放置好 K 個群心(註)
將各個資料點分配到最近的群心
各群心更新位置到自己群的重心
重複
重複
重複
重複
重複
重複
重複
重複
重複
完成!
可以看到 K-means 就跟前面的演算法一樣
都有一個要最小化的值
在這裡是「群心與群內各點之距離和」
但它卻不是先以數學分析
而是直接以演算法迭代來達成
群心的初始分布對聚類結果有一定的影響
常用的初始化方式就有三種
拿這些群的群心當初始群心
離已經挑過的越遠越容易被挑中
權重
資料
加總&加上偏置
激勵函數
輸出
感知器的數學表述與 SVM 極為相似
輸出為
損失函數
感知器也是一種線性分類器
與 SVM 不同的是,它並不追求最大化邊界
只要找出能分類兩組資料的直線就好
以分類而言其實是比 SVM 差的
那感知器到底有什麼用途呢?