神经网络(无监督)
神经网络主要用来做分类,可以实现无监督的学习。
神经网络由很多神经网络层构成,而每一层又由许多单元组成,第一层叫输入层,中间的叫隐藏层,最后一层叫输出层。
最后一层的输出是用来描述测试集的类别,最后预测结果选择最大的那个神经元。
每一个神经单元都有一定的能量,作为它的输出。
在BP神经网络中,只有相邻神经层的单元之间才有联系,它们的连接有一个权重,其值在[-1,1]之间;
除了输出层外,每一层都有一个偏置结点,是为了描述训练集中没有的特征,偏置结点对于下一层的每一个结点的权重的不同而生产不同的偏置,可以把偏置当成结点的属性。
所以除了输入层外,每一层都有一个偏置,取值[0,1],每一层的结点都有一个输入值,其值为上一层所有结点按权重传递过来的能量之和加上偏置,输出值就是对它的输入值作非线性变换,也定义为这个节点的能量。
输入层没有输入值,其输出即为训练集的属性,因此输入层的结点个数一般等于训练集的属性个数。
训练一个BP神经网络,实际上就是调整网络的权重和偏置这两个参数,BP神经网络的训练过程分两部分:
(1)前向传输,从第一层开始,波浪式的传递输出值。
首先随机初始化权重和偏置,然后设置输入层的输出值,对隐藏层和输出层的每一个结点都计算输出值,就完成前向传播的过程。
(2)逆向反馈,从最后一层开始,逐层调整权重和偏置,缩小输出层的输出值与类别之间的差异。
(因为前面权重和偏置都是随机取的,因此网络的输出就还不准确,因此需要调整)
比较著名的一个例子就是,垃圾邮件的识别。对一封电子邮件,第一步就是特征提取,把出现在里面的所有词汇提取出来,把文字信息变成数字,输入到神经网络进行训练,最后的输出是0或者1,表示是否是垃圾邮件。