1.MLP/ANN
1.多层感知机(MLP)原理简介
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图

从上图可以看到,多层感知机层与层之间是全连接的。多层感知机最底层是输入层,中间是隐藏层,最后是输出层。
2.手写数字识别示例
2.1 结构

对28*28=784分辨率的图像进行数字图像识别,每一个像素点上的字迹亮度可以用[0,1]表示,将其展开成为一列
在这个网络中,我们选择加入两个隐藏层,每一层是16个神经元,
2.2 层次
神经网络运作的时候,上一层的激活值决定下一层的激活值,所以神经网络处理信息的核心机制就是一层的激活值是如何算出下一层的激活值的
理想情况下,我们希望倒数第二层的每一个神经元对应一个笔划部件

这样,神经网络只需学习哪些部件能组成什么数字就行

可以继续分,再上一层的神经元可以是各个短边
2.3 计算
如果想识别某块区域是否存在图像,可以给那块区域每个方块赋权为1,其他为0,这样就只会累加我们关注区域的像素值
如果想识别这块区域是否存在边,可以给周围一圈的像素赋权为负数。这样当中间的像素亮,周围的像素暗,这样累计加权值就会最大
这样加权计算出的数据可以是任意大小,但是我们需要激活值落在[0,1]区间
这里可以使用sigmoid函数

可能有时即使加权值>0时也不想将神经元点亮,可能只有值>10时点亮才有意义,这时候可以增加bias,即偏置项。我们只需在加权值后面-10
即权重告诉你第二层的神经元关注什么样的像素图案,偏置则告诉你加权和得有多大,神经元的激发才有意义。
我们可以用向量表示计算过程,更加简洁

对于这样的一个全连接神经网络,共有13002个参数

其实整个神经网络就是一个函数,一个输入784个值,输出10个值的函数
2.4 改进/ReLU
ReLU即线性整流函数,早期使用sigmoid函数激活神经元,现在发现使用ReLU在较深的神经网络上计算效果更好

在CNN等结构中将原先的sigmoid、tanh换成ReLU可以取得比较好的效果,RNN中可能会采用tanh,更多资讯可以参考RNN 中为什么要采用 tanh,而不是 ReLU 作为激活函数?
更多激活函数可以参考这篇文章激活函数 sigmoid、tanh、relu
3. 参考
本文作者:乐池
本文链接:https://www.cnblogs.com/ratillase/p/18071570
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具