# TimMLP **Repository Path**: timtargaryen/tim-mlp ## Basic Information - **Project Name**: TimMLP - **Description**: 写个toy做ds课设,仅用矩阵乘法(Eigen)实现反向传播算法(backpropagation),求导选择的是简单的数值求导、中心差分算法、成功进行了线性回归的拟合 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-06-05 - **Last Updated**: 2022-06-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 《基于eigen3多层感知机的反向传播算法实现》 > *Deep learning 现在有四大范式 MLP、CNN、RNN、Attention,一般feature extractor会是CNN、RNN,semantic info都会MLP、attention所获得* > > 为了自适应地拥有最好的权重,他们都不开反向传法算法,或者是bp-based的训练方法(e.g. rnn有BPTT) > > 所以,做为ds课设,很有价值基于链表手写复现其中最为简单的MLP ## 1.目标:只用线性代数库实现反向传播算法并验证通用近似定理(不可解释的级别、可解释可视化是后续工作) * 这里我们验证的是多层感知机,即$ \phi(.) $本质是复合函数的情况 * loss为平方误差损失函数$MSE(y, y_{predict}) = (y - y_{predict})^2$ * 选择的激活函数仅为relu,即$Relu(x) = \begin{cases}x , x>0 \\ 0, x \le 0\end{cases}$ * 误差衡量标准为相对误差,即$ Error = \frac{|\delta|}{S_{true}} $ ## 2. 下一步的挑战 * 思考为什么Loss会导向相对误差为0、预测值恒为0的状态?梯度爆炸?加skip connection会好吗?(我加过BN,没用) * 这里我打算证明的是多项式情形即$f(x_1, x_2, x_3, ..., x_n) = \prod_{i}^{m} (\sum_{j}^{n}a_{i, j}x_j)$其中的a可以从m层神经网络的权重矩阵中学得,当然这个 * 用ViT分patch的方式刷一下minst(pytorch采用LeNet架构可以刷到98%,目前sota99.4x),以及能不能用我的c++ MLP复现google 21年的工作MLP-mixer