标签:
我们举几个栗子:
假如我们有一个数据空间如左上角坐标系所示,那么我们要的模型需要如右边公式所示的预测函数.
假设有n个特征那么计算二次多项式就有O(n^2)的复杂度.n能有多大?我们来看下面这个栗子.
假设我们需要识别汽车,假如选取图像上两个点,那么就如左边坐标系所示,这没什么.
但实际上我们需要的数据空间时整张图片所有的像素.也就是假设图像是
刚才说的是灰度图,如果时RGB的话时
综上所述,线性分类器肯定是不行的.
神经网络是模拟人类的神经元时发明的.
一个神经元(Neuron)就是如图所示,他和我们的逻辑回归表示并没有什么区别.
Sigmoid Function叫做激励(activation)函数.
神经网络由多个神经元连接而成,其中第一层被称为输入层(input layer);最后一层被称为输出层(output layer);其他的被称为隐藏层(Hidden layer).
我们通常使用
我们可以将通过向量化来简化神经网络的计算.
我们可以把左下角图中Layer 2的Sigmoid函数提出,这样我们可以用
也就是右边所示的过程.
写成一般形式就是:
我们把神经元连接的方式叫做架构.
为了方便我们理解神经网络,这里有几个栗子.
假如我们有右边的数据空间,那么比较好的边界就是如图所示.
我们先简化数据为左边的图,也就是说我们需要训练一个模型求得左下的y式,很复杂.
我们先来个简单的AND运算.如上图,假设我们的theta如下
之前说过多类别分类问题采用(one vs all)
假设我们有4个类别需要识别,那么我们就有四个分类器.
每个分类器的含义同之前,
Tips:
数据空间=
在神经网络中,神经单元的代价函数就是逻辑回归中的代价函数的一般式.
解释一下:
需要注意的是
我们的目标是:
其中
那么我们需要计算的就是
直观上来说就是对每一个节点计算
假设我们有一个网络如图:
首先我们从输出节点开始求
变成向量化的形式:
然后往前倒推:
直到
那么忽略
使用上述公式
我们引入
对于每一组样例,
我们先用FP来计算
最后按照偏导项公式累加
fminunc这些高级函数在使用的时候需要传递向量,而
我们可以把矩阵展开,来达到向量化的目的,然后在costFunction中重组
简单的说就是使用双侧差分(two sided difference)求近似导数.
在神经网络中具体实现就是如下.
一般我们取
总结:
1. BP求DVec.
2. 求gradApprox.
3. 检测是否相似
4. 关闭检测(因为梯度检测很慢),使用BP学习.
经过之前的学习,我们发现每一层的所有单元都会经过相同的训练.所以我们使用随机初始化来打破这种对称性.
随机初始化指的是随机化初始的参数矩阵,使他们接近0却不完全相同.
- 输入单元数:特征空间维度.
- 输出单元数:类数
- 隐藏层:通常为一层,每层激励个数相同,数量选择时需要考虑输入输出层,通常稍大于输入层.
人们想要模拟大脑,因为大脑是最好的学习模型.
兴起与80s~90s,但随后衰退.但是今年由于数据量和计算速度的提高又变得兴起
人类的大脑能学习很多的东西,比如分辨事物,学习,计算,说话等等.
我们也能写很多算法来模拟这些”任务”,实现该过程.但是大脑的学习应该是只有一个学习算法的(The “one single learning algorithm” hypothesis).
科学家把动物视神经切断,而把听觉神经连接到本来由视神经连接的位置(视觉皮层),最后发现动物能完成视觉辨别任务.
左上角:在额头上佩戴灰度摄像机,数据输出到舌头的电极,刺激舌头.失明的人能在几十分钟内学会”看”.
右上角:人类声呐定位.通过打响指或者咂舌来制造声音,通过听觉来分辨回声,定位周围的物体(这是一种训练,手机上玩过一个游戏叫 Echo还是Dark Echo的就是这种感觉).
左下角:蜂鸣腰带,朝向北时腰带蜂鸣很强,使人类拥有鸟类的方向感(这个..恩..).
右下角:给青蛙按第三只眼睛,青蛙能学着使用(卧槽,那岂不是给人类大脑接一个高清摄像头就行,学习量可能有点大吧)
标签:
原文地址:http://blog.csdn.net/hivoodoo/article/details/51116232