机器学习:神经网络之表达
Posted liguangsunls
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习:神经网络之表达相关的知识,希望对你有一定的参考价值。
**************************************
注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结非常easy遗忘。依据课程加上自己对不明确问题的补充遂有此系列博客。
本系列博客包含线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检測、推荐系统及大规模机器学习等内容。
**************************************
神经网络:表达
非线性假说
使用非线性的多项式项,可以帮助我们建立更好的分类模型。
如果我们有许多的特征。比如大于100个变量,我们希望用这 100个特征来构建一个非线性的多项式模型,结果将是数量很惊人的特征组合。即便我们仅仅採用两两特征的组合(x1x2+x1x3+x1x4+...+x2x3+x2x4+...+x99x100),我们也会有接近 5000个组合而成的特征。这对于一 般的逻辑回归来说须要计算的特征太多了。
这种问题还有非常多,比如在计算机视觉的汽车检測问题中。对于一副汽车图片来说,你能够轻易的辨别出这是一辆汽车,可是在计算机或者相机“眼里”。这仅仅是一堆像素的数字矩阵而已:
所以,对于汽车检測问题,我们须要一堆汽车图片和一堆非汽车图片作为训练集,训练一个用于汽车检測的分类器
假使我们採用的都是 50x50 像素的小图片。而且我们将全部的像素视为特征,则会有 2500 个特征,假设我们要进一步将两两特征组合构成一个多项式模型,则会有约 25002/2 个(接近3百万个)特征。
普通的逻辑回归模型,不能有效地处理这么多的特征。这时候我们须要神经网络。
我们模拟大脑中的神经元结构建立一个简单的模型-Logistic unit:
我们设计出了类似于神经元的神经网络,效果例如以下:
当中x1,x2,x3是输入单元(input units),我们将原始数据输入给它们。 a1,a2,a3是中间单元。它们负责将数据进行处理,然后呈递到下一层。 最后是输出单元,它负责计算 h(x)。
神经网络模型是很多逻辑单元依照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。上图为一个3 层的神经网络,第一层成为输入(InputLayer),最后一层称为输出层(Output Layer)。中间一层成为隐藏层(Hidden Layers)。我们为每一层都添加了一个偏差单位(bias unit)。
模型表示二
相对与使用循环来编码。利用向量化的方法会使得计算更为简便。
事实上神经网络就像是 logistic regression。只只是我们把 logistic regression 中的输入向量[x1~x3]变成了中间层的[a(2)1~a(2)3], 我们能够把a0,a1,a2,a3看成更为高级的特征值,也就是 x0,x1,x2,x3的进化体,而且它们是由x与决定的,由于是梯度下降的,所以a是变化的,而且变得越来越厉害。所以这些更高级的特征值远比只将 x次方厉害。也能更好的预測新数据。
这就是神经网络相比于逻辑回归和线性回归的优势。
特征和直观解释
我们的目标是利用神经网络实现一个逻辑代数中的同或运算,因此首先介绍一下同或运算和异或运算:
同或逻辑和异或逻辑是仅仅有两个逻辑变量的逻辑函数。假设当两个逻辑变量A和B同样时,逻辑函数F等于1。否则F等于0。这样的逻辑关系称为同或。
反之。假设当两个逻辑变量A和B相异时,逻辑函数F等于1,否则F等于0。这样的逻辑关系称为异或。
将其相应到一个非线性分类器,例如以下图所看到的:
先介绍三种最主要的逻辑运算(与逻辑运算、或逻辑运算、非逻辑运算),同一时候分别介绍其相应的神经网络实现。最后将这几种主要的逻辑运算组合,形成终于的同或逻辑运算的神经网络。
左图的神经元(三个权重分别为-30,20,20)能够被视为作用同于逻辑与(AND)。中图的神经元(三个权重分别为-10,20,20)能够被视为作用等同于逻辑或(OR)。右图的神经元(两个权重分别为 10,-20)能够被视为作用等同于逻辑非(NOT):
我们能够利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。
比如我们要实现 XNOR 功能(输入的两个值必须一样,均为 1 或均为0)。即 XNOR=(x1ANDx2)OR((NOTx1)AND(NOTx2))
上图中第二层隐藏网络a1和a2分别代表了A And B和Not A And Not B。a1和a2又做了一次或逻辑运算就得到了同或逻辑运算。
该神经网络相应的输出与同或运算的真值表同样。
多分类问题
当我们有不止两种分类时(也就是 y=1,2,3….)。比方我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车。在输出层我们应该有 4个值。
比如,第一个值为1或0用于预測是否是行人,第二个值用于推断是否为汽车。 输入向量x有三个维度,两个中间层,输出层4个神经元分别用来表示4类,也就是每
一个数据在输出层都会出现[a b c d]T,且a,b,c,d中仅有一个为1,表示当前类。以下是该神经网络的可能结构演示样例:
当向量的某个元素为1,其它为0时,代表分类结果为某个为1元素所相应的类别。这与之前逻辑回归中的多类分类表示不同,在逻辑回归中,输出y属于类似于{1, 2, 3,4}中的某个值,而非一个向量。因此。假设要训练一个多类分类问题的神经网络模型,训练集是这种:
******************
作者:hao_09
时间:2015/8/13
文章地址:http://blog.csdn.net/lsh_2013/article/details/47454079
******************
以上是关于机器学习:神经网络之表达的主要内容,如果未能解决你的问题,请参考以下文章