1.非线性假设
我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。
下面是一个例子:
如果n是原始特征的个数,事实上二次项的个数大约是(n2)/2!三次项个数大约是n3!
因此要包含所有的二次项,不是很好实现,而且由于项数过多,最后的结果很可能是过拟合的,也存在运算量过大的问题。
因此当初始特征个数n个数很大时,将高阶多项式项数包括到特征里,会使特征空间急剧膨胀,当特征个数n很大时,建立非线性分类器并不是好做法。
对很多实际机器学习问题,特征个数n是很大的!
假设我们希望训练一个模型来识别视觉对象(例如识别一张图片上是否是一辆汽车),我们怎样才能这么做呢?一种方法是我们利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值(饱和度或亮度)来作为特征。
假如我们只选用灰度图片,每个像素则只有一个值(而非 RGB值),我们可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车:
引入非线性假设的必要性:
从学习算法的训练样本中,找到一些汽车图片和一些非汽车图片,从图片中选择一组像素点位,像素点1的位置和像素点2的位置。在坐标系中标出这幅汽车的位置,车的位置取决于像素点1和像素点2的强度,用同样的方法处理其他图片。
我们需要一个非线性假设来尽量分开这两类样本,这里特征空间的维数是多少?假设我们用50*50像素的图片,特征向量的元素数量N = 2500,特征向量X就是包含了所有像素强度的列表,所有像素点的亮度。对于典型的计算机图片表示方法,如果存储的是每个像素点的灰度值,那么每个元素的值应该在0到255之间,因此这个问题中,n = 2500,但是这只是使用灰度图片的情况,如果我们用的是RGB彩色图像,每个像素点包含红、绿、蓝三个值,那么n = 7500,因此,如果我们需要通过包含所有的二次项特征来学习得到非线性假设,那么这就是式子中的所有条件:xi * xj,由于有2500像素,总共就有约300万个特征。对于每个样本都要找到并表示所有这300万个特征,计算成本就太高了。
普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络。
2.神经元和大脑
神经网络最初产生的目的是制造能模拟大脑的机器,而它能解决不同的机器学习问题,不只因为它受到生物学的启发。
可以用它们做什么?不仅包括将其应用到现代的机器学习问题上,而且包括对制造真正的智能机器这一伟大的人工智能梦想感兴趣的人!
再次兴起的原因是神经网络的计算量较大,计算机的速度变快才足以运行大规模的神经网络。
大脑什么都可以做五花八门各种各样的事?怎么模仿它?
能不能假设大脑做这些不同事情的方法不需要上千个不同的程序去实现,相反的,大脑处理的方法,只需要一个学习算法就可以了?
神经重接实验:
其引申出的理念就是:
如果有一块脑组织可以处理光,声或者触觉信号,那么也许存在一种学习算法,可以同时处理视觉、听觉和触觉,而不是运行上千个不同的程序或上千个算法。我们要找出的就是近似的实际的大脑学习算法,然后实现它,让大脑自己学习如何处理这些不同类型的数据。
我们几乎可以把任何一种传感器接到大脑的几乎任何一个部位,大脑就会学会处理它。
如果我们能找到大脑的学习算法,然后再计算机上执行,大脑学习算法或者与之相近的算法,我们也许就会向人工智能之梦迈进,制造出真正的智能机器做出的最好的尝试。
对现代机器学习问题,神经网络是最先进的一种算法。
3.模型表示
为了构建神经网络模型,我们需要首先思考大脑中的神经网络是怎样的?每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。
下面是一组神经元的示意图,神经元利用微弱的电流进行沟通。这些弱电流也称作动作电位,其实就是一些微弱的电流。所以如果神经元想要传递一个消息,它就会就通过它的轴突,发送一段微弱电流给其他神经元,这就是轴突。
这里是一条连接到输入神经,或者连接另一个神经元树突的神经,接下来这个神经元接收这条消息,做一些计算,它有可能会反过来将在轴突上的自己的消息传给其他神经元。这就是所有人类思考的模型:我们的神经元把自己的收到的消息进行计算,并向其他神经元传递消息。这也是我们的感觉和肌肉运转的原理。如果你想活动一块肌肉,就会触发一个神经元给你的肌肉发送脉冲,并引起你的肌肉收缩。如果一些感官:比如说眼睛想要给大脑传递一个消息,那么它就像这样发送电脉冲给大脑的。
神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被成为权重(weight)。
以上是单神经元,神经网络其实是一组神经元连接在一起的集合。
网络中的第一层被称为输入层,因为我们在这一层输入特征。
最后一层被称为输出层,因为这一层的神经元输出假设的最终计算结果。
中间第二层被称为隐藏层,隐藏层的值在训练集中是看不到的,一个神经网络中可能不仅有一个隐藏层。
我们设计出了类似于神经元的神经网络,效果如下:
神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。下图为一个3层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):
下面引入一些标记法来帮助描述模型: 代表第 层的第 个激活单元。代表从第 层映射到第 层时的权重的矩阵,例如代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第 层的激活单元数量为行数,以第 层的激活单元数加一为列数的矩阵。例如:上图所示的神经网络中的尺寸为 3*4。
对于上图所示的模型,激活单元和输出分别表达为:
上面进行的讨论中只是将特征矩阵中的一行(一个训练实例)喂给了神经网络,我们需要将整个训练集都喂给我们的神经网络算法来学习模型。
我们可以知道:每一个都是由上一层所有的和每一个所对应的决定的。
(我们把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION ))
把, , 分别用矩阵表示:
我们可以得到 。
4.模型表示2
这个神经网络所做的事就像是逻辑回归,但是它不是使用原本的x1,x2,x3作为特征,而是用a1,a2,a3作为新的特征,同时特征项a1,a2,a3也是学习得到的函数输入值,由输入层到隐藏层的映射,是由另一个函数决定的,这个函数由其他参数决定。
因此在神经网络中,它没有用输入特征x1,x2,x3来训练逻辑回归,而是自己训练逻辑回归的a1,a2,a3,可以想象,根据为θ1选择不同的参数,有时可以学习到很有趣和复杂的特征,就可以得到一个更好的假设函数,比用原始输入得到的假设更好。你也可以选择多项式x1,x2,x3等作为输入项,但这个算法可以尝试快速学习任意的特征项,把这西a1,a2,a3作为特征输入到最后的单元,这部分实际上是逻辑回归算法。
为了更好了了解Neuron Networks的工作原理,我们先把左半部分遮住:
右半部分其实就是以, 按照Logistic Regression的方式输出:
其实神经网络就像是logistic regression,只不过我们把logistic regression中的输入向量 变成了中间层的, 即: 我们可以把看成更为高级的特征值,也就是的进化体,并且它们是由 与决定的,因为是梯度下降的,所以是变化的,并且变得越来越厉害,所以这些更高级的特征值远比仅仅将 次方厉害,也能更好的预测新数据。 这就是神经网络相比于逻辑回归和线性回归的优势。
5.特征和直观理解1
为什么神经网络可以用来学习复杂的非线性假设模型?
我们可以用这样的一个神经网络表示AND 函数:
其中 我们的输出函数即为:
我们知道的图像是:
所以我们有:
所以我们的:
这就是AND函数。
接下来再介绍一个OR函数:
OR与AND整体一样,区别只在于的取值不同。
6.样本和直观理解II
二元逻辑运算符(BINARY LOGICAL OPERATORS)当输入特征为布尔值(0或1)时,我们可以用一个单一的激活层可以作为二元逻辑运算符,为了表示不同的运算符,我们只需要选择不同的权重即可。
下图的神经元(三个权重分别为-30,20,20)可以被视为作用同于逻辑与(AND):
下图的神经元(三个权重分别为-10,20,20)可以被视为作用等同于逻辑或(OR):
下图的神经元(两个权重分别为 10,-20)可以被视为作用等同于逻辑非(NOT):
我们可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。例如我们要实现XNOR 功能(输入的两个值必须一样,均为1或均为0),即 首先构造一个能表达部分的神经元:
然后将表示 AND 的神经元和表示的神经元以及表示 OR 的神经元进行组合:
我们就得到了一个能实现 运算符功能的神经网络。
按这种方法我们可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。
这就是神经网络的厉害之处。
7.多元分类
解决多类别分类问题,因为我们可能需要去区分不止一个类别。
多类别分类算法的实现方法本质上是一对多法的拓展,输出变成了四维向量,用第一个输出单元来判断图中是否有一个行人,再用第二个输出单元判断图中是否有一辆汽车,...摩托车...货车...就像是逻辑回归中的一对多法,有四个逻辑分类器,它们每一个都要识别图中的物体是否是四种物体中的一种。
重新排版后:
神经网络算法的输出结果为四种可能情形之一: