前言:
我這篇做些額外整理與補充。
目前星爆AI智商 (因為訓練資料太少,下一步大概會做自動星爆資料處理):
程式一樣在
個人網站閱讀比較方便喔~
生成對抗網路 (Generative Adversarial Network)
就是現在最夯的繪圖AI基本網路,他是由Generator和Discriminator組成,訓練階段也分成兩種:
- 固定Generator參數並持續產生圖片,參雜真實圖片給Discriminator看,Discriminator要去分辨誰是生產的,誰是真實的,以此訓練Discriminator。
- 固定Discriminator的參數,Generator要學著產生會讓Discriminator誤判的圖片(真假難辨的地步),也就是目標讓Discriminator誤判最大化。
製作Module
[官方範例]
[範例] 基本NN:將輸入的數值+1
產生文字圖片
以最入門的MNIST資料庫為例,使用GAN產生文字。
定義Disc和Gen:
*Gen通常會比Disc多一個雜訊參數。
最基本的概念如同我們國小學的:y=ax+b , a是權重,b是位移。
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
[範例]
需要注意的是他輸出的shape:
Weight和Bias
預設值
,會在每次反向傳播時更新。
也可以自己設定初始值[1]:
LeakyReLU
ReLU是將所有的負值都設為零,相反,Leaky ReLU是給所有負值賦予一個非零斜率。[2]
LeakyReLU — PyTorch 1.13 documentation[範例]
Sigmoid
有點老的激活函數,後期之後就比較少人用(?),主要是他的曲線有點曖昧(且計算量比ReLu大)[4]。
[範例]
Loss函數
Loss函數[6]定義了誤差距離,最簡單的L1是取直線距離,L2取直線平方距離....到一些進階的BCE取Log距離等等。 神經網路追求的就是誤差(Loss)越小越好。