- 人工神经网络ANN由一组互相连接的结点和有向链构成
- 感知器:包含输入结点和一个输出结点,每个输入结点通过一个加权的链连接到输出结点,而权值代表神经元之间连接的强度,训练一个感知器模型相当于不断调整链的权值,直到拟合训练数据的输入输出关系为止
- 感知器的输入结点简单的把接收到的值传递给输出链,不做任何转换;输出结点则是计算输入的加权和,减去偏置项,然后根据结果产生输出
- 学习感知器模型:重点是权值更新公式,新权值=旧权值+正比于预测误差的项
- 多层人工神经网络:网络的输入层和输出层之间有很多中间层,即隐藏层,其中的结点为隐藏结点;每一层结点只和下一层结点相连,即前馈;感知器是单层,只有一个结点层(输出层)进行数学运算;而在递归中,允许同一层结点相连或一层的结点连到前面各层中的结点;
- 除了输出符号的函数外,网络还可以使用其他激活函数,这些激活函数允许隐藏结点和输出结点的输出值与输入参数呈非线性关系;重点还是找到权值
- 基于梯度下降的神经网络权值学习方法:
- 学习ANN模型:目标数确定一组权值,该权值下的预测和实际值的误差平方和最小;太难了,你看书吧;当激活函数是简单的函数时,将已知量带入公式则误差函数可以求最小值,但是如果是其他函数,梯度下降则是一种策略:权值应该沿着使总体误差项减小的方向增加,但是因为函数是非线性的,梯度下降的策略会陷入局部极小值
- 中间层的输出值不知道,后面层的输入值也不知道的情况下,很难估计误差项,需要一种反向传播的技术,算法每一次迭代包括两个阶段:
- 前向阶段:使用前一次迭代所得到的权值计算网络中每一个神经元的输出值
- 后向阶段:以相反的方向应用权值更新公式
- 使用反向传播可以用k+1层神经元的误差来估计k层神经元的误差
- ANN学习中的设计问题:
- 确定输入层的结点,
- 数值输入变量、二元输入变量对应一个输入结点
- 分类变量则每一个分类值为输入结点
- 确定输出层的结点数目
- 2-类问题,1个输出点
- k-类问题,k个输出点
- 选择网络拓扑结构(隐藏层数和结点数,前馈还是递归)
- 初始化权值和偏置,随机赋值是可取的
- 去掉遗漏值的训练样例或者用合理的值代替
- 确定输入层的结点,
- 人工神经网络的特点:
- 选择合适的拓扑结构来防止模型的过分拟合
- ANN可以处理冗余属性,因为权值在训练过程中自动学习,冗余属性的权值非常小
- 神经网络对训练数据中的噪声非常敏感,可以使用确认集估计模型的泛化误差,另一种方法是每次迭代把权值减少一个因子
- 梯度下降方法会收敛到局部极小值,在权值更新公式中加入动量项momentum term
- 训练ANN开销大,收益大
- 基于距离的分类器
- K-Nearest Neighbour (KNN) :对象的最近邻的k个样本会影响对象的分类
- Condensed Nearest Neighbour (CNN) 优化算法