《Deep Learning》译文 第六章 深度前馈网络 从异或函数说起

6.1 从异或函数说起

为了使前馈网络的概念更具体化,我们先从一个简单地例子说起,这个例子中,我们使用前馈网络解决一个简单的任务:学习异或函数。

众所周知,异或(XOR)操作是一种针对二进制值的二目操作符。当两个操作数不同时返回1,其他返回0.异或函数为我们提供了我们想要学习到的目标函数y=f*(x),而我们的模型提供了函数y=f(x;θ),我们的学习算法将修正参数θ使得模型函数f尽可能的接近目标函数f*。

在本例中,我们更加关心网络能否在X={[0,0]T,[0,1]T,[1,0]T,and [1,1]T}这四个点上获得正确的结果,而不是讨论如何扩展其泛化能力。我们将使用上述四个点训练这个网络,主要的难题是如何使这个网络适应训练集。

我们可以把这个问题当做回归问题,并且使用均方误差(MSE)做为损失函数。使用MSE是为了在数学计算上简单一点,而在后续章节中我们会介绍其他更适合二值数据的误差度量方法。

针对我们的训练集,MSE损失函数表示如下:

现在,我们必须确定模型的类型,因为我们要得到f(x;θ)的具体形式。我们暂且选定一个线性模型,那么它可以被表示为:

根据训练数据,求解正规方程(normal equations)  很容易得到w=0并且b=1/2。

(如果大家和博主一样把线性代数都还给老师了,请移步至Normal
Equations 的由来
了解一下normal equations。)

但是问题出现了,我们求得的这个模型,其输出永远是0.5. 为什么会这样子呢?图6.1说明了为何线性模型不能有效的表达XOR函数。解决这种问题的一种方法就是利用一个模型去学习一个不同的表征空间,使得在那个空间中,我们可以应用一个线性模型来解释这个问题。

特别的,我们将引入一个非常简单的前馈网络,这个网络只有一个隐含层,并且只含有两个隐藏单元。详见图6.2。在这个网络中,输入层的数据通过函数f(1)(x;w,c)得到隐含层单元的数值,这个数值构成了向量h,而h则会作为第二层(即输出层)的输入。大家可以看到,输出层仍然是一个线性的回归模型,但是,它的计算对象是h而不是先前的x了。这个网络现在由两个函数组成:h=f(1)(x;w,c)和y=f(2)(h;w,b),整体可以表示为:f(x;w,c,w,b)=f(2)(f(1)(x))。

那么,函数f(1)是什么样子的呢?目前为止,我们对线性模型的使用是轻车熟路的,因而我们会理所当然的想到能否尝试着将f(1)也设置为线性的呢?不幸的是,如果f(1)是线性的,那么整个前馈网络都将会是线性的,因为如果我们暂时忽略函数中的截距项,就会有:f(1)=WTx和f(2)=hTw.那么f(x)=wTWTx,这显然是线性的。

因此,我们明确了一点,那就是特征的描述函数必须是非线性的。大多数的神经网络都会应用激活函数来应对这个问题,这是一种不变的、非线性的函数。通过它再配合学习到的参数可以完成最终的仿射变换。在这里我们也采用这种策略,我们定义h=g(WTx+c),其中W为线性转换的权重,c被称为偏置。现在,我们描述从x到h的仿射变换,激活函数g是元素级别的,hi=g(xTW:,i+ci).现今,我们大多默认g为ReLU函数(rectifiedlinear
unit,修正线性单元),在这种情况下,g(z)=max{0,z} (这就是ReLU函数,是不是炒鸡简单)见图6.3

我们现在可以将网络完整的定义为如下形式:

在这里,我们指出XOR问题的一组解:

其中b=0.

对于:

我们的网络能够得到正确的解:

读者可自行验证。

在这个例子中,我们仅仅是指出了这个问题的一组解,而这个解可以获得0误差的成绩。但是在真实的情况下可能会有数以百万计的数据需要我们处理,并且有同样数量级的参数需要我们去调节,此时求解参数就绝不可能像解决XOR问题那样简单地指出来了。此时,一种基于梯度下降的优化算法就有了用武之地,它可以求解得到非常接近ground truth的值。

时间: 2024-10-20 07:36:49

《Deep Learning》译文 第六章 深度前馈网络 从异或函数说起的相关文章

深度学习Bible学习笔记:第六章 深度前馈网络

第四章 数值计算(numerical calculation)和第五章 机器学习基础下去自己看. 一.深度前馈网络(Deep Feedfarward Network,DFN)概要: DFN:深度前馈网络,或前馈神经网络(FFN)/多层感知机(MLP) 目标:近似模拟某函数f  y=f(x;θ) 学习参数θ的值,得到最佳的函数近似. 注:并非完美模拟大脑,只是实现统计泛化,函数近似机.源于大脑,但远远比不上大脑 结构:  f(x)=f(3)(f(2)(f(1)(x))) 前馈(feedforwar

深度前馈网络

1.深度前馈网络 定义了一个映射 y = f(x;θ),并且学习参数 θ 的值,使它能够得到最佳的函数近似 2.这种模型被称为前向(feedforward) 在模型的输出和模型本身之间没有反馈(feedback)连接 3.深度(depth) 模型的层数 4.隐藏层(hidden layer) 隐藏层的维数决定了模型的宽度(width) 5.线性模型 逻辑回归和线性回归 被局限在线性函数里 扩展线性模型来表示 x 的非线性函数  ?(x) 上,这里 ? 是一个非线性变换 如何选择映射 ? 使用一个

deep learning framework(不同的深度学习框架)

常用的deep learning frameworks 基本转自:http://www.codeceo.com/article/10-open-source-framework.html 1. Caffe 基于C++开发 2. Theano 大部分代码是使用CYthon开发的,主页有很详细的教程,在github上有Theano的软件包 基于theano派生了许多的深度学习python软件包:Keras.Lasagne 3. Torch7

Deep Learning with Python第二章(翻译)5

为了让它更具体一些,让我们回去看看MNIST例子的过程.首先,我们下载了MNIST的数据包: (略) 下一步,我们展示了张量train_images的轴的数量,ndim属性: (略) 这是它的shape: (略) 并且这是它的数据类型,dtype属性: (略) 所以我们有了一个8位int的3D张量.更准确的说,这是一个每个包含了28*8个整数的60000个矩阵.每个矩阵是一个有着0到255之间系数的灰度图片. 让我们使用Matplotlib库(标准科学python套中的一部分)来展示四个3D张量

第六章,GET网络请求demo(Android)

在 AndroidManifest.xml中添加网络权限 <uses-permission android:name="android.permission.INTERNET"/> MainActivity package com.example.demo10; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpC

【深度学习Deep Learning】资料大全

转载:http://www.cnblogs.com/charlotte77/p/5485438.html 最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books Deep Learning66 by Yoshua Bengio, Ian Goodfellow and Aaron Courville Neural Networks and Deep Learning42 by Michael Nielsen Deep Learning27 by

机器学习(Machine Learning)&amp;amp;深度学习(Deep Learning)资料

机器学习(Machine Learning)&深度学习(Deep Learning)资料 機器學習.深度學習方面不錯的資料,轉載. 原作:https://github.com/ty4z2008/Qix/blob/master/dl.md 原作作者會不斷更新.本文更新至2014-12-21 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍非常全面.从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep L

机器学习(Machine Learning)&amp;深度学习(Deep Learning)资料

机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.Deep Learning. <Deep Learning in Neural Networks: An Overview> 介绍:这是瑞士人工智能实验室Jurgen Schmidhuber写的最新版本

机器学习001 deeplearning.ai 深度学习课程 Neural Networks and Deep Learning 第一周总结

Deep Learning Specialization 吴恩达老师最近在coursera上联合deeplearning.ai 推出了有关深度学习的一系列课程,相对于之前的machine learning课程,这次的课程更加实用,作业语言也有matlab改为了python从而更加贴合目前的趋势.在此将对这个系列课程做一个学习笔记. 而这次的Deep Learning Specialization分为五门课程,分别为:Neural Networks and Deep Learning,Improv