(附链接)干货 | numpy实现全部机器学习算法
点击左上方蓝字关注我们
地址:https://github.com/ddbourgin/numpy-ml
手撸算法的目的在于能够更好的学习和深入理解算法,而不是要替代已有的框架,毕竟成熟的框架在效率和精准度上都已经得到验证。
我们来看下已经实现的算法:
EM 训练
维特比解码
似然计算
通过 Baum-Welch/forward-backward 算法进行 MLE 参数估计
用变分 EM 进行 MLE 参数估计的标准模型
用 MCMC 进行 MAP 参数估计的平滑模型
4.1 层/层级运算
Add
Flatten
Multiply
Softmax
全连接/Dense
稀疏进化连接
LSTM
Elman 风格的 RNN
最大+平均池化
点积注意力
受限玻尔兹曼机 (w. CD-n training)
2D 转置卷积 (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 优化器
SGD w/ 动量
AdaGrad
RMSProp
Adam
4.5 学习率调度器
常数
指数
Noam/Transformer
Dlib 调度器
4.6 权重初始化器
Glorot/Xavier uniform 和 normal
He/Kaiming uniform 和 normal
标准和截断正态分布初始化
4.7 损失
交叉熵
平方差
Bernoulli VAE 损失
带有梯度惩罚的 Wasserstein 损失
4.8 激活函数
ReLU
Tanh
Affine
Sigmoid
Leaky ReLU
4.9 模型
Bernoulli 变分自编码器
带有梯度惩罚的 Wasserstein GAN
4.10 神经网络工具
col2im (MATLAB 端口)
im2col (MATLAB 端口)
conv1D
conv2D
deconv2D
minibatch
决策树 (CART)
[Bagging] 随机森林
[Boosting] 梯度提升决策树
岭回归
Logistic 回归
最小二乘法
贝叶斯线性回归 w/共轭先验
最大似然得分
Additive/Lidstone 平滑
简单 Good-Turing 平滑
使用交叉熵方法的智能体
首次访问 on-policy 蒙特卡罗智能体
加权增量重要采样蒙特卡罗智能体
Expected SARSA 智能体
TD-0 Q-learning 智能体
Dyna-Q / Dyna-Q+ 优先扫描
Nadaraya-Watson 核回归
k 最近邻分类与回归
离散傅立叶变换 (1D 信号)
双线性插值 (2D 信号)
最近邻插值 (1D 和 2D 信号)
自相关 (1D 信号)
信号窗口
文本分词
特征哈希
特征标准化
One-hot 编码/解码
Huffman 编码/解码
词频逆文档频率编码
相似度核
距离度量
优先级队列
Ball tree 数据结构
END