非线性假设
假如有一个监督学习分类问题它的训练集如图所示:
如果使用logistc分类方法(逻辑回归),我们可以构造一个包含很多非线性项的logistc回归函数,当多项式(例如图中特征x1,x2任意组合)足够多时,那么就可能分类成功。
当我们需要输入的特征量n很大时:
如果多项式只包含二次项,那么会产生大量的二次项;如果只包含其中的平方项,那么会因为忽略了太多的相关项,而导致拟合的曲线不准确;如果包含三次项,那么数据量更大了。
由于项数过多可能产生过拟合,并且也存在运算量过大的问题。
对于许多实际的机器学习问题特征个数n是很大的。
例如计算机视觉中图像识别问题:
假设我们有一个50x50像素的图片,它的特征向量个数 n = 2500(如果使用彩色图像(RGB)那么此时的特征向量个数 n = 7500);如果我们要通过包含所以的二次项特征来学习得到非线性假设(例如下面这个例子 xi*xj 大约有300万个特征向量)那么它的特征是百万级别的,计算成本太高了。
所以复杂的非线性问题,我们需要寻找其他的方法。
神经元与大脑
神经网络:模仿大脑的算法
模型展示
模仿神经元(一个神经元就是一个计算单元):
x0:偏置(固定为1)
θ:权重(参数)
hθ(x):激活函数
神经网络(多个神经元相连):
第一层:输入层(Input layer),输入特征
最后一层:输出层(output layer),输出最终结果
中间层:隐藏层(hidden layer)
神经网络分析:
a(j)i:表示第 j 层第 i 个神经元
θ(j):第 j 层到第 j+1 层的权重矩阵
向量化计算:
前向传播(forward propagation):从输入层激励向前传播给隐藏层并计算,然后继续传播,最后计算输出层的激励。
z(j+1) = θ(j)T * X(j)
神经网络类似逻辑回归,只不过我们把输入的x1,x2,x3学习得到更复杂的特征a1,a2,a3,而a1,a2,a3又是由输入的x1,x2,x3和一组Θ决定 ;由此可以得到更好的假设函数。
例子与直觉理解
与运算:
或运算:
非运算:
异或(与和非运算结合):
神经网络实现手写数字识别:
多元分类
神经网络解决多分类问题:
假设区分 n 个类别,则最终输出的向量为 n 维(也可说每个维度是一个逻辑回归分类器,每个维度识别相应的类别)。
如下图区分4个类别,和它们的输出向量。
标签与输出向量维度相同,输出向量与那个类别的标签相近,即为该类别。