送书 | Keras深度学习你必须知道的神经网络基础

点击上方“程序人生”,选择“置顶公众号”

第一时间关注程序猿(媛)身边的故事


人工神经网络表示一类机器学习的模型,最初是受到了哺乳动物中央神经系统研究的启发。网络由相互连接的分层组织的神经元组成,这些神经元在达到一定条件时就会互相交换信息(专业术语是激发(fire))。最初的研究开始于20世纪50年代后期,当时引入了感知机(Perceptron)模型。感知机是一个可以实现简单操作的两层网络,并在20世纪60年代后期引入反向传播算法(backpropagation algorithm)后得到进一步扩展,用于高效的多层网络的训练。有些研究认为这些技术起源可以追溯到比通常引述的更早的时候。直到20世纪80年代,人们才对神经网络进行了大量的学术研究,那时其他更简单的方法正变得更加有用。然后,由于G.Hinton提出的快速学习算法,以及2011年前后引入GPU后使大量数值计算成为可能,开始再度出现了神经网络研究的热潮。

这些进展打开了现代深度学习的大门。深度学习是以一定数量网络层的神经元为标志的神经网络,它可以基于渐进的层级抽象学习相当复杂的模型。几年前,3~5层的网络就是深度的,而现在的深度网络已经是指100~200层。

这种渐进式抽象的学习模型,模仿了历经几百万年演化的人类大脑的视觉模型。人类大脑视觉系统由不同的层组成。我们人眼关联的大脑区域叫作初级视觉皮层V1,它位于大脑后下方。视觉皮层为多数哺乳动物所共有,它承担着感知和区分视觉定位、空间频率以及色彩等方面的基本属性和微小变化的角色。据估计,初级视觉层包含了1亿4000万个神经元,以及100亿个神经元之间的连接。V1层随后和其他视觉皮层V2、V3、V4、V5和V6连接,以进一步处理更复杂的图像信息,并识别更复杂的视觉元素,如形状、面部、动物等。这种分层组织是1亿年间无数次尝试的结果。据估计,人类大脑包含大约160亿个脑皮质神经细胞,其中10%~25%是负责视觉信息处理的。深度学习就是从人类大脑视觉系统的层次结构中获得了启发,前面的人工神经网络层负责学习图像基本信息,更深的网络层负责学习更复杂的概念。

今天的这本书《Keras深度学习实战》用当前流行的Keras框架实现了大量深度学习算法,构建了众多深度学习模型,并且介绍了深度学习在游戏等实际场合中的应用,特别是本书还介绍了当前火热的生成对抗网络(GAN)的应用。

640?wx_fmt=jpeg

本书涵盖了神经网络的几个主要方面,并提供了基于Keras和最小有效Python库作为深度学习计算的可运行网络实例编码,后端基于谷歌的TensorFlow或者蒙特利尔大学的Theano框架。

好的,让我们切入正题。

在本文,我们将介绍以下内容:

•  感知机

•  多层感知机

•  激活函数

•  梯度下降

•  随机梯度下降

•  反向传播算法

我们将介绍以下内容:

1.1  感知机

感知机是一个简单的算法,给定n维向量x(x1, x2, …, xn)作为输入,通常称作输入特征或者简单特征,输出为1(是)或0(否)。数学上,我们定义以下函数:

640?wx_fmt=png

这里,w是权重向量,wx是点积(译者注:也称内积、数量积或标量积) ,

b是偏差。如果你还记得基础的几何知识,就应该知道wx+b定义了一个边界超平面,我们可以通过设置w和b的值来改变它的位置。如果x位于直线之上,则结果为正,否则为负。非常简单的算法!感知机不能表示非确定性答案。如果我们知道如何定义w和b,就能回答是(1)或否(0)。接下来我们将讨论这个训练过程。

第一个Keras代码示例

Keras的原始构造模块是模型,最简单的模型称为序贯模型,Keras的序贯模型是神经网络层的线性管道(堆栈)。以下代码段定义了一个包含12个人工神经元的单层网络,它预计有8个输入变量(也称为特征):

from keras.models import Sequential
model = Sequential()
model.add(Dense(12, input_dim=8, kernel_initializer='random_uniform'))

每个神经元可以用特定的权重进行初始化。Keras提供了几个选择,其中最常用的选择如下所示。

•  random_uniform:初始化权重为(–0.05,0.05)之间的均匀随机的微小数值。换句话说,给定区间里的任何值都可能作为权重。

•  random_normal:根据高斯分布初始化权重,平均值为0,标准差为0.05。如果你不熟悉高斯分布,可以回想一下对称钟形曲线。

•  zero:所有权重初始化为0。

完整选项列表请参考Keras官网。

1.2  多层感知机——第一个神经网络的示例

完整选项列表请参考Keras官网。在本文中,我们将定义一个多层线性网络,并将其作为本书的第一个代码示例。从历史上来看,感知机这个名称是指具有单一线性层的模型,因此,如果它有多层,我们就可以称之为多层感知机(Multilayer perceptron,MLP)。图1.1展示了一个一般的神经网络,它具有一个输入层、一个中间层和一个输出层。


640?wx_fmt=png

图1.1


在图1.1中,第一层中的每个节点接收一个输入,并根据预设的本地决策边界值确定是否激发。 然后,第一层的输出传递给中间层,中间层再传递给由单一神经元组成的最终的输出层。有趣的是,这种分层组织似乎模仿了我们前面讨论过的人类的视觉系统。

1.2.1  感知机训练方案中的问题

让我们来考虑一个单一的神经元如何选择最佳的权重w和偏差b?理想情况下,我们想提供一组训练样本,让机器通过调整权重值和偏差值,使输出误差最小化。 为了更加的具体,我们假设有一组包含猫的图像,以及另外单独的一组不包含猫的图像。为了简单起见,假设每个神经元只考虑单个输入像素值。当计算机处理这些图像时,我们希望我们的神经元调整其权重和偏差,使得越来越少的图像被错误识别为非猫。这种方法似乎非常直观,但是它要求权重(和/或偏差)的微小变化只会在输出上产生微小变化。

如果我们有一个较大的输出增量,我们就不能进行渐进式学习(而非在所有的方向上进行尝试—这样的过程称为穷举搜索—我们不知道是否在改进)。毕竟,小孩子是一点一点学习的。不幸的是,感知机并不表现出这种一点一点学习的行为,感知机的结果是0或1,这是一个大的增量,它对学习没有帮助,如图1.2所示。

我们需要一些更平滑的东西,一个从0到1逐渐变化不间断的函数。在数学上,这意味着我们需要一个可以计算其导数的连续的函数。

640?wx_fmt=png

图1.2



1.2.2  激活函数—sigmoid

sigmoid函数的定义如下:

640?wx_fmt=png

如图1.3所示,当输入在(−∞,∞)的区间上变化时,位于(0,1)区间上的输出值变化很小。从数学的角度讲,该函数是连续的。典型的sigmoid函数如图1.3所示。

640?wx_fmt=png

图1.3


神经元可以使用sigmoid来计算非线性函数σ(z=wx+b)。注意,如果z=wx+b是非常大的正值,那么e−z→0,因而σ(z)→1;而如果z=wx+b是非常大的负值,e−z→∞,因而σ(z)→0。换句话说,以sigmoid为激活函数的神经元具有和感知机类似的行为,但它的变化是渐进的,输出值如0.553 9或0.123 191非常合理。在这个意义上,sigmoid神经元可能正是我们所要的。

1.2.3  激活函数—ReLU

sigmoid并非可用于神经网络的唯一的平滑激活函数。最近,一个被称为修正线性单元(Rectified Linear Unit,ReLU)的激活函数很受欢迎,因为它可以产生非常好的实验结果。

ReLU函数简单定义为f(x)=max(0,x),这个非线性函数如图1.4所示。对于负值,函数值为零;对于正值,函数呈线性增长。

640?wx_fmt=png

图1.4


1.2.4  激活函数

在神经网络领域,sigmoid和ReLU通常被称为激活函数。在“Keras中的不同优化器测试”一节中,我们将看到,那些通常由sigmoid和ReLU函数产生的渐进的变化,构成了开发学习算法的基本构件,这些构件通过逐渐减少网络中发生的错误,来一点一点进行调整。图1.5给出了一个使用σ激活函数的例子,其中(x1, x2, …, xm)为输入向量,(w1, w2, …, wm)为权重向量,b为偏差, 表示总和。

640?wx_fmt=png

图1.5

Keras支持多种激活函数,完整列表请参考Keras官网。


本文摘自《Keras深度学习实战》

640?wx_fmt=jpeg

[意大利]安东尼奥·古利 等著

点击封面购买纸书


本书用当前流行的Keras框架实现了大量深度学习算法,构建了众多深度学习模型,并且介绍了深度学习在游戏等实际场合中的应用,特别是本书还介绍了当前火热的生成对抗网络(GAN)的应用。全书通俗易懂,强调实际案例,适合广大的机器学习从业者和爱好者入门与实践。


本期评奖规则

在本文下方留言,用30+个字符,留言说说你想要这本书的理由是什么~

我们会从留言用户中,按照留言点赞数,抽取排名在第3、14、20名的3位幸运者,送出本书。


开奖时间:7月10日当天(以当天小编开奖时看到的名次顺序为准)


- The End -

「若你有原创文章想与大家分享,欢迎投稿。」

加编辑微信ID,备注#投稿#:

程序 丨 druidlost  

小七 丨 duoshangshuang


更多精彩内容

640?wx_fmt=jpeg

640?wx_fmt=gif

Deep Learning with Keras by Antonio Gulli English | 26 Apr. 2017 | ASIN: B06Y2YMRDW | 318 Pages | AZW3 | 10.56 MB Key Features Implement various deep-learning algorithms in Keras and see how deep-learning can be used in games See how various deep-learning models and practical use-cases can be implemented using Keras A practical, hands-on guide with real-world examples to give you a strong foundation in Keras Book Description This book starts by introducing you to supervised learning algorithms such as simple linear regression, the classical multilayer perceptron and more sophisticated deep convolutional networks. You will also explore image processing with recognition of hand written digit images, classification of images into different categories, and advanced objects recognition with related image annotations. An example of identification of salient points for face detection is also provided. Next you will be introduced to Recurrent Networks, which are optimized for processing sequence data such as text, audio or time series. Following that, you will learn about unsupervised learning algorithms such as Autoencoders and the very popular Generative Adversarial Networks (GAN). You will also explore non-traditional uses of neural networks as Style Transfer. Finally, you will look at Reinforcement Learning and its application to AI game playing, another popular direction of research and application of neural networks. What you will learn Optimize step-by-step functions on a large neural network using the Backpropagation Algorithm Fine-tune a neural network to improve the quality of results Use deep learning for image and audio processing Use Recursive Neural Tensor Networks (RNTNs) to outperform standard word embedding in special cases Identify problems for which Recurrent Neural Network (RNN) solutions are suitable Explore the process required to implement Autoencoders Evolve a deep neural network using reinforcement learning About the Author Antonio Gulli is a software executive and business leader with a passion for establishing and managing global technological talent, innovation, and execution. He is an expert in search engines, online services, machine learning, information retrieval, analytics, and cloud computing. So far, he has been lucky enough to gain professional experience in four different countries in Europe and managed people in six different countries in Europe and America. Antonio served as CEO, GM, CTO, VP, director, and site lead in multiple fields spanning from publishing (Elsevier) to consumer internet (Ask.com and Tiscali) and high-tech R&D (Microsoft and Google). Sujit Pal is a technology research director at Elsevier Labs, working on building intelligent systems around research content and metadata. His primary interests are information retrieval, ontologies, natural language processing, machine learning, and distributed processing. He is currently working on image classification and similarity using deep learning models. Prior to this, he worked in the consumer healthcare industry, where he helped build ontology-backed semantic search, contextual advertising, and EMR data processing platforms. He writes about technology on his blog at Salmon Run. Table of Contents Neural Networks Foundations Keras Installation and API Deep Learning with ConvNets Generative Adversarial Networks and WaveNet Word Embeddings Recurrent Neural Network — RNN Additional Deep Learning Models AI Game Playing Conclusion
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值