·预测函数模型——使用一个一元一次线性函数去模拟神经元的轴突、树突的行为
·前向传播——把统计观测而来的数据送入预测函数得到进行预测的过程
调整w
人类提供w的初值,机器做w的修正
alpha 防止大幅度震荡的学习率
·选择平方/均方误差作为误差的评估手段
误差e与w形成的代价函数是标准的一元二次函数,成为代价函数。
根据斜率是否大于等于0来调整w的斜率。
随机梯度下降:在单个样本形成的代价函数上进行
对于两极分化的分类问题,神经元预测模型变的无效了
激活函数:
激活函数是非线性的,可以很好地用来分类,为机器学习注入灵魂
让预测函数产生山丘一样的曲线
让神经元形成一个网络
多添加了两个神经元,将数据分别送入这两个神经元进行计算,再把计算结果送入到第三个神经元进行计算,最后输出
通过增加对输入更多的抽象维度,产生更多的解读而实现更加复杂的分类效果。
隐藏层——中间这些新添加的神经元节点
正是隐藏层的存在,才让神经网络能在复杂情况下继续生效
隐藏层神经元的数量越多,皆可以产生越复杂的组合,解决越复杂的问题,计算量也随之越来越大
深度——一个神经网络中纵向的隐藏层比较多(很深)
深度神经网络——隐藏层超过三层
拉链式法则——通过反向传播把 误差 传播(或者说分配)到每个权重参数w和偏置项b上
把误差e传递到第二层的神经元两个权重参数上:
偏置项:
第一层第一个输入的权重w11_1
第一层第二个输入的权重w12_1
第一层第二个偏置项:
隐藏层需要多少神经元
简单的定性分析:
可以通过0.5等高线在俯视图上呈现一个闭合的圈圈,来划分所需要的隐藏层的神经元数量。
一个神经元就是一条直线,在这里如果两个神经元(两个直线)的话无法闭合,所以需要三个神经元。
二维是线,三维增加了厚度
异或:一样的1不一样的0
需要一层包含三个神经元的隐藏层
而这个网络很难训练:
当初选择sigmoid函数是因为:导数处处不为0,这样在反向传播的时候使用梯度下降算法来计算函数的导数,再用这个导数去修正参数
但是sigmoid函数有一个很严重的问题:
在函数远离中心点的位置,导数极其小,这样梯度下降就很难进行–>出现梯度消失的问题
所以现在人们普遍使用Relu函数作为激活函数
但是实际效果中发现直接使用Relu函数的效果比使用改进版Relu函数效果要好,所以还是普遍使用Relu函数(神经网络比较复杂,隐藏层神经元多)。
除Relu函数本身之外,还有更多会导致梯度消失的问题。
泛化能力:模型在测试集上的准确率
卷积神经网络:
观察到一个图像数据在空间上,有不可分割的关联性,所以想到使用卷积神经网络。
卷积核的参数不是事先设置好的,是像普通神经元的权重一样通过训练学习得来的。
……
输出的是一个概率
归一化操作:把灰度值缩放到0~1之间
因为输入数据的灰度值在0-255之间,意味着某些黑暗部分的像素值很小,明亮部分的像素值很大。这样的数据会导致代价函数(碗状)很不友好(又宽又矮),使梯度下降变得困难。
变成0-1之间的值之后,代价函数会变得比较均匀,有利于梯度下降的进行
对于图像识别,一般采用卷积神经网络。
一个卷积核的训练效果是提取图像的一种特征,而我们需要提取图像更多 的特征,可以再搞一个卷积核提取第二种特征,再搞一个卷积核提取第三种特征……
池化层
最大池化层让大的值被筛选出来,能很好地提取主要特征。
池化层并不是必须的,但是加了之后往往效果不错。
池化操作因为是固定的套路,所以在反向传播中没有任何需要学习的参数。
观察到一个图像数据在空间上有不可分割的关联性 --> 使用卷积神经网络。
在时间上也可能是如此,如气温数据、股票数据等。最典型的是人类的语言:
神经网络该如何处理这种有关联性的数据呢?以文字举例:
嵌入矩阵:词汇表的词向量集合
所以词向量就可以像卷积神经网络中的卷积核那样,在训练中不断学习,最后自己学习到合适的词向量表示
每个特征的含义到了训练最后都会变得很抽象了,但肯定是捕捉到了一定的特征
一般是去使用别人在海量数据上训练好的词向量数据,应用到我们自己的工程中
替换自己的词向量矩阵,并且叫它(自己的)不再更新
适合序列处理 处理关联的能力
自然语言处理实践
循环神经网络:RNN:
此处的激活函数多采用双曲正切函数tanh,而不是relu(用relu也行)。
像Keras这种编程框架中循环神经网络,默认用tanh
循环神经网络中的第一步不像其他步那样有来自上一步输出的结果一起输入,为了保证每一步操作的统一性,一般会手动添加一个共同输入x0(比如一个为全0的向量) x0,x1 -> a1
经过多次重复,就有机会把这个“好看”的正面意思消解掉,让最后的预测值做出改变,从而产生负向的分类结果。
再加一层RNN
一般2~3层
LSTM:长短时记忆网络:应对更长的序列依赖
除了输入输出以外,还添加了细胞状态的概念(遗忘门、记忆门……)
GRU结构:简化LSTM的结构,很多时候结果相近,目前大家乐于使用GRU