生活随笔
收集整理的這篇文章主要介紹了
人工智能复习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 多層感知機
- 注意力機制
- 遷移學習抑制遺忘
- 神經網絡的可解釋性
- 多模態(tài)學習
- 常用的訓練優(yōu)化方法
- 預訓練
- dropout 方法
- 權重衰減正則化
- 數據增廣
- Batch Normalization 批量歸一化
多層感知機
結構:輸入層,隱藏層,輸出層;mlp 是一種最簡單的神經網絡算法。
學習率:參數變化的步長
CrossEntropyLoss 是 交叉熵
為什么使用交叉熵
使用交叉熵作為損失函數相比于均方差,可以消除sigmoid的一次導數項(很小的數據),反向傳播時可以保留更多的數據,加速網絡收斂
torch 的 nn 包里面有input_layer 有 hidden 有 output 都使用nn的Linear構造輸入輸出節(jié)點
optim.Adam() 包含很多的優(yōu)化包
torch中tensor的使用
torch
.tensor
(data
, dtype
=torch
.float)
將data數據類型轉換為float
如何理解 pytorch 中的tensor 的 dim=-1
dim=-1和dim=2 是同樣的效果
tensor.T相當于是在做轉置
zero_grad() 優(yōu)化器的梯度去除是為了不讓上一次的梯度影響這一次的傳播,因此需要在方向傳播之前完成
import torch
import torch
.nn
as nn
import torch
.nn
.functional
as F
import torch
.optim
as optim
import randomrandom
.seed
(1919810)class MLP(nn
.Module
):def __init__(self
):super(MLP
, self
).__init__
()self
.input_layer
= nn
.Linear
(4, 20)self
.hidden
= nn
.Linear
(20, 5)self
.output
= nn
.Linear
(5, 2)self
.loss_fn
= nn
.CrossEntropyLoss
()def forward(self
, x
, label
):x
= self
.input_layer
(x
)x
= F
.elu
(x
)x
= self
.hidden
(x
)x
= F
.elu
(x
)x
= self
.output
(x
)loss
= self
.loss_fn
(x
, label
)x
= F
.softmax
(x
, dim
=-1)predict
= x
.argmax
(dim
=-1)return predict
, lossEnglish
=[88 , 92, 89 ,97 ,88 ,87 ,77 ,91 ,87 ,85 ,74 ,75 ,76 ,83 ,64 ,75 ,80 ,76 ,69 ,83 ,77 ,78 ,74 ,76 ,73 ,59 ,78 ,74 ,72 ,63]
Cal
=[ 92 , 89, 86 ,94 ,91 ,79 ,86 ,90 ,85 ,86 ,76 ,86 ,74 ,73 ,78 ,76 ,74 ,72 ,73 ,76 ,73 ,75 ,78 ,80 ,83 ,75 ,78 ,75 ,74 ,71]
Matrix
=[90 , 88, 87 ,96 ,87 ,86 ,95 ,76 ,87 ,85 ,74 ,68 ,74 ,85 ,90 ,84 ,76 ,82 ,75 ,76 ,75 ,72 ,79 ,72 ,70 ,63 ,84 ,76 ,77 ,77]
Probability
=[85, 98 ,85 ,89 ,86 ,93 ,86 ,91 ,85 ,84 ,83 ,66 ,74 ,85 ,80 ,73 ,64 ,78 ,82 ,74 ,73 ,89 ,74 ,85 ,70 ,64 ,74 ,77 ,80 ,69]
Label
=[1, 1, 1, 1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0]
A_student
= [88,74, 89, 92]
B_student
= [80,75, 74, 69]data
= []
data
.append
(English
)
data
.append
(Cal
)
data
.append
(Matrix
)
data
.append
(Probability
)
data
= torch
.tensor
(data
, dtype
=torch
.float)
o_data
= data
data
= ((data
.T
- data
.min(dim
=-1)[0]) / (data
.max(dim
=-1)[0] - data
.min(dim
=-1)[0]))label
= torch
.tensor
(Label
).Tmodel
= MLP
()
optimizer
= optim
.Adam
(model
.parameters
(), lr
=1.14e-2)for epoch
in range(514):p
, loss
= model
(data
, label
)optimizer
.zero_grad
()loss
.backward
()optimizer
.step
()print(f
'p - {p}\n label - {label}\n loss: {loss.item()}')predict
= []
predict
.append
(A_student
)
predict
.append
(B_student
)
predict
= torch
.tensor
(predict
, dtype
=torch
.float)
predict
= ((predict
- o_data
.min(dim
=-1)[0]) / (o_data
.max(dim
=-1)[0] - o_data
.min(dim
=-1)[0]))p
, _
= model
(predict
, torch
.tensor
([0, 0]))
print(p
)
注意力機制
一文看懂注意力機制
為什么需要注意力機制?人看東西不是看完了所有的細節(jié),只看重點,同樣可以很好的完成日常任務,使用注意力機制可以幫助及其關注重點,更快,更好完成任務。
注意力機制步驟:
1.計算不同的屬性和目標的相似度
2.用softmax表達相似度的概率
3.概率高的,權重高,加權訓練
RNN 網絡
干什么:處理有一定關聯的神經網絡輸入。例如根據輸入的上一個單詞的性質預測下一個單詞的詞性。
怎么做:將隱藏層的輸出連回隱藏層的輸入。
遷移學習抑制遺忘
增量學習
學習新知識的時候學習舊知識。面對新任務時,將舊的數據也納入訓練數據集。
重復模型然后調參
用舊的模型參數做為起點,訓練新的模型,做決策時同時考慮新舊兩種模型。
特征提取器保留
將特征提取器的參數保留,而訓練全連接層的參數
非遺忘學習
學習新任務時,用舊的模型給部分新的數據打上標簽,再訓練新的數據,達到遷移學習的目的。
神經網絡的可解釋性
反向cnn訓練,知道某個輸出代表了什么輸入
多模態(tài)學習
統一特征
將特征映射到同一個空間中,歸一化特征
聯合表示
使得不同形態(tài)的數據形式間有關聯性,約束性
常用的訓練優(yōu)化方法
預訓練
類似于遷移學習,將已經訓練好的參數直接拿來使用。
dropout 方法
神經元不是所有的都連接,隨機選擇激活神經元。用來解決過擬合。
權重衰減正則化
限制模型不能非常復雜,可以在損失函數上下功夫。
數據增廣
人工神經網絡需要很多的訓練樣本,如果說是數據夠,可以自己來湊,對圖片旋轉,平移,翻轉。
Batch Normalization 批量歸一化
為什么要這個方法:提高模型的泛化能力
核心思想:識別對網絡用處不大的神經元,削弱這些神經元的作用。
內部協變量移位
多層感知機底層的參數變化,會導致上層參數的巨大變化。也很容易陷入激活函數的飽和區(qū)。解決辦法要么換激活函數,要么限制輸入數據的方位,限制范圍是BN算法做的事情
總結
以上是生活随笔為你收集整理的人工智能复习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。