手擼算法的目的在于能夠更好的學(xué)習和深入理解算法,而不是要替代已有的框架,畢竟成熟的框架在效率和精準度上都已經(jīng)得到驗證。
我們來看下已經(jīng)實現(xiàn)的算法:
1. 高斯混合模型
EM 訓(xùn)練
2. 隱馬爾可夫模型
維特比解碼
似然計算
通過 Baum-Welch/forward-backward 算法進行 MLE 參數(shù)估計
3. 隱狄利克雷分配模型(主題模型)
用變分 EM 進行 MLE 參數(shù)估計的標準模型
用 MCMC 進行 MAP 參數(shù)估計的平滑模型
4. 神經(jīng)網(wǎng)絡(luò)
4.1 層/層級運算
Add
Flatten
Multiply
Softmax
全連接/Dense
稀疏進化連接
LSTM
Elman 風格的 RNN
最大+平均池化
點積注意力
受限玻爾茲曼機 (w. CD-n training)
2D 轉(zhuǎn)置卷積 (w. padding 和 stride)
2D 卷積 (w. padding、dilation 和 stride)
1D 卷積 (w. padding、dilation、stride 和 causality)
4.2 模塊
雙向 LSTM
ResNet 風格的殘差塊(恒等變換和卷積)
WaveNet 風格的殘差塊(帶有擴張因果卷積)
Transformer 風格的多頭縮放點積注意力
4.3 正則化項
Dropout
歸一化
批歸一化(時間上和空間上)
層歸一化(時間上和空間上)
4.4 優(yōu)化器
SGD w/ 動量
AdaGrad
RMSProp
Adam
4.5 學(xué)習率調(diào)度器
常數(shù)
指數(shù)
Noam/Transformer
Dlib 調(diào)度器
4.6 權(quán)重初始化器
Glorot/Xavier uniform 和 normal
He/Kaiming uniform 和 normal
標準和截斷正態(tài)分布初始化
4.7 損失
交叉熵
平方差
Bernoulli VAE 損失
帶有梯度懲罰的 Wasserstein 損失
4.8 激活函數(shù)
ReLU
Tanh
Affine
Sigmoid
Leaky ReLU
4.9 模型
Bernoulli 變分自編碼器
帶有梯度懲罰的 Wasserstein GAN
4.10 神經(jīng)網(wǎng)絡(luò)工具
col2im (MATLAB 端口)
im2col (MATLAB 端口)
conv1D
conv2D
deconv2D
minibatch
5. 基于樹的模型
決策樹 (CART)
[Bagging] 隨機森林
[Boosting] 梯度提升決策樹
6. 線性模型
嶺回歸
Logistic 回歸
最小二乘法
貝葉斯線性回歸 w/共軛先驗
7.n 元序列模型
最大似然得分
Additive/Lidstone 平滑
簡單 Good-Turing 平滑
8. 強化學(xué)習模型
使用交叉熵方法的智能體
首次訪問 on-policy 蒙特卡羅智能體
加權(quán)增量重要采樣蒙特卡羅智能體
Expected SARSA 智能體
TD-0 Q-learning 智能體
Dyna-Q / Dyna-Q+ 優(yōu)先掃描
9. 非參數(shù)模型
Nadaraya-Watson 核回歸
k 最近鄰分類與回歸
10. 預(yù)處理
離散傅立葉變換 (1D 信號)
雙線性插值 (2D 信號)
最近鄰插值 (1D 和 2D 信號)
自相關(guān) (1D 信號)
信號窗口
文本分詞
特征哈希
特征標準化
One-hot 編碼/解碼
Huffman 編碼/解碼
詞頻逆文檔頻率編碼
11. 工具
相似度核
距離度量
優(yōu)先級隊列
Ball tree 數(shù)據(jù)結(jié)構(gòu)