非线性模型
多层感知机(神经网络)
- 通过线性模型拼出非线性模型
- bias提供偏差
- 通过sigmoid函数处理使结果为处于0-1之间的概率
- 调整感知机的权重, 会获得不同的曲线(非线性模型)
神经网络分为三层:
- 输入层
- 隐藏层(可以有多层)
- 输出层
深度神经网络: 隐藏层大于一层
多分类和softmax
多少种分类代表输出层的神经元有多少个
多分类使用softmax函数
二分类使用sigmoid函数
使用softmax函数的原因:
sigmoid是softmax的一个特例, 如下图(图片来源: https://www.zhihu.com/question/294679135)
第一步:
创建一个函数集
Create a function set
feedforward(前向传播)
神经网络是一个函数, 输入向量, 输出向量
给定一个网络结构, 定义一个函数集合
通过调整W和b的值(调参), 来不断降低误差函数的值, 优化神经网络j
每个神经元进行矩阵运算
使用并行计算技术可以加速矩阵运算
第二步:
定义什么样函数是好的函数
Define goodness of function
第三步:
获得最好的函数
Get the best function
backpropagation(反向传播)
让梯度下降效率更高
训练神经网络过程
训练神经网络过程:
- 做前向传播操作(feedforward)
- 比较模型输出和期望输出(\(\hat{y}\)和\(y\))
- 计算误差(error function)
- 运行梯度下降算法散布误差到每个权重(backpropagation)
- 利用这个去更新权重, 从而获得一个更好的模型
- 持续这个过程, 直到获得一个好的模型
模型出错的原因:
- 迭代次数有问题
- 或者学习率的设置有问题