神经网络原理
神经元模型
就是一个线性模型, 在机器学习中广泛使用
w 斜率(连线权重) b 截距, n 输入个数 , f 激活函数
一般写成, 等价, 也称 :感知器 Perceptron, 不同学科里面名称不同
神经网络结构
也称 多层感知机
Multi-Layer Perceptron (MLP)
激活层函数
作用: 线性变成非线性
, relu 目前常用, 激活函数必须能求导
隐藏层 + 激活层 (分来能简化学习步骤), 不然还是线性
输出层
第一步以 e为底, 求所有指数的幂, 2 将所有指数幂求和, 用这个公式对输出进行运算 做归一化的处理
左侧:预测, 右侧:真实
需要将 softmax层的输出做一个量化, 来评价结果好坏
简单方法: 1-0.9=0.1
方法二: -log0.9 越接近一越准确
训练的目的是使损失尽可能减小,损失函数: 模型训练的目标, 神经网络学习的灵魂
- 不同神经网络的差异主要体现在: 网络结构模型,损失函数, 动态求解损失函数过程不一样, 过拟合解决方式不同
反向传播
算出交叉熵损失函数后就要向后反向传播, 这个过程是优化调整参数, 自动做权重 w 和 截距 b 的优化
反向传播就是利用 梯度下降法 寻找最优参数,找到最快下降路径的过程
小结
sof tmax 把输出映射到 0-1 之间
多层感知机
- 为什么要引入非线性?
- 深度网络有什么好处?
- 激活函数有哪些?
线性网络的局限
h1第一层 , h2第二层
怎么引入非线性
f 非线性层, 提高神经网络表示能力。
非线性空间变换 可以将原始空间中的数据变换到新的高维空间中去
多层感知机(Multi-Layer Perceptron)
输入层接受数据, 隐藏层处理, 输出层输出
输入层是n 维向量 , 隐藏层 m 个神经元 , b 是偏置
多隐藏层
激活函数(Activation Function)
线性空间转换, 没有激活函数, 不管深度有多深依然是陷阱, 有了激活函数就可以对特征空间扭曲,翻转
Sigmoid函数
将输出值压缩到 0-1的范围内, 出了二分类, 现在较少使用
空间转换 映射投影
Tanh函数
循环神经网络RNN ,输入值较大的时候容易导致梯度消失
Relu函数
最大值函数, 导数为 01, 更加文档
缺点 负数值为0, 为了解决, 出现了改进版的 relu 函数
softmax函数
输入是一个向量, 输出也是一个向量, 每个输出值都是一个概率值, 累加和是1