机器学习:神经网络之表达

**************************************

注:本系列博客是博主学习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

******************

时间: 2024-08-03 14:20:34

机器学习:神经网络之表达的相关文章

机器学习——神经网络

神经网络基础概念 人工神经网络又叫神经网络,是借鉴了生物神经网络的工作原理形成的一种数学模型.神经网络是机器学习诸多算法中的一种,它既可以用来做有监督的任务,如分类.视觉识别等,也可以用作无监督的任务.同时它能够处理复杂的非线性问题,它的基本结构是神经元,如下图所示: 其中,x1.x2.x3代表输入,中间部分为神经元,而最后的hw,b(x)是神经元的输出.整个过程可以理解为输入-->处理-->输出. 由多个神经元组成的就是神经网络 如图所示: 这是一个4层结构的神经网络,layer1为输入层,

Python -- machine learning, neural network -- PyBrain 机器学习 神经网络

I am using pybrain on my Linuxmint 13 x86_64 PC. As what it is described: PyBrain is a modular Machine Learning Library for Python. Its goal is to offer flexible, easy-to-use yet still powerful algorithms for Machine Learning Tasks and a variety of p

机器学习--神经网络

以下是最近在学习人工智能时整理的一点心得,没有很深的东西,觉得可以简单的了解一下机器学习与神经网络是什么 机器学习 所谓机器学习,就是在大量数据的运行下,使得计算机可以进行归纳,预测   机器学习分为三类:监督学习,无监督学习,强化学习 抛开强化学习不讲,这里的监督学习与无监督学习的根本区别在于:有无数据的标记(即y值) 我们将输入的数据称之为数据的特征,一组特征为一个样本,需要求得的结果为标签 例: 1. 有一组数据,格式为(身高,体重,BMI) 这里使用监督学习的效果为: 输入若干样本的特征

机器学习---神经网络(2)

今天主要学习了神经网络中一个重要的算法--BP(back propagation) 它是一个前馈网络,就是神经元的输出是向前传播的:其名字的意思是指最后输出的误差经由神经网络后向传播,影响每一级的权值 简单的说其思想就是:信号的正向传播 ----> 误差的反向传播:将输出误差以某种形式通过隐层向输入层逐层反传,不断更新权值. 这个博客写的很好:http://hahack.com/reading/ann2/

机器学习神经网络的一些大众误解

现在很多速成班,甚至很多大学数学都没学好的人都号称自己是什么机器学习算法专家,真的是可笑: 我是突然想到这点,就写出来记录一下: 我个人感觉要真的能把机器学习做到活学活用的水平,还是很难的,就算是我这种数学和统计出身的人,也最多只能说自己略懂一点: 上次看个句子对抗句子生成网络的文章,里面用到了policy gradient和蒙特卡洛搜索,应用在seq2seq的框架上:policy gradient是强化学习的东西,那个蒙特卡罗的方法倒是挺常见:说实话我看了一天才勉强看懂,可能我水平低: 很多人

机器学习: 神经网络中的Error函数

利用神经网络做分类的时候,可以将神经网络看成一个mapping function,从输入到输出经过复杂的非线性变换.而输出的预测值与实际的目标值总是存在一定偏差的,一般利用这种偏差建立error 函数,再利用back propagation 来训练神经网络. 我们可以探讨一下,error 函数与概率分布或者概率密度函数的关系. 二分类 先来看二分类情况(t∈{0,1}),我们假设网络最终的输出会经过一个sigmoid 函数: y=σ(a)=11+exp(?a) 0≤y(x,w)≤1, y(x,w

机器学习-神经网络算法应用(二)

1. 简单非线性关系数据集测试(XOR): X:                  Y 0 0                 0 0 1                 1 1 0                 1 1 1                 0 # -*- coding:utf-8 -*- from NeuralNetwork import NeuralNetwork import numpy as np nn = NeuralNetwork([2, 2, 1], 'tanh'

Google发布机器学习平台Tensorflow游乐场~带你玩神经网络(转载)

Google发布机器学习平台Tensorflow游乐场-带你玩神经网络 原文地址:http://f.dataguru.cn/article-9324-1.html> 摘要: 昨天,Google发布了Tensorflow游乐场.Tensorflow是Google今年推出的机器学习开源平台.而有了Tensorflow游乐场,我们在浏览器中就可以训练自己的神经网络,还有酷酷的图像让我们更直观地了解神经网络的工作原理.今 ... 网络 工具 机器学习 神经网络 Tensorflow 昨天,Google发

Python神经网络算法与深度学习视频教程人工智能算法机器学习实战视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv