neural network(神经网络): an introduction(一)


  当下深度学习技术已经运用到很多领域和任务中,笔者也是一个初学者,主要研究方向是自然语言处理,接触时间大概一年左右,也不算深入,在这里写下一些读书笔记吧,和大家一起学习。鉴于笔者水平有限,难免有些不正确的地方,还望看到的朋友不吝赐教。

  我个人在学习中,应用深度学习技术到自然语言处理任务中,取得了一些较好的效果,比如中文分词、机器翻译、基于生成式的对话系统、情感分析、文本分类、关系模板等等。由于经常在小组内讨论和介绍一些神经网络、深度学习方面的内容,我决定把这些工作记录下来,以便个人学习。

  今年是人工智能60年,从早起基于规则的方法,到基于统计的方法,再到今天的深度学习。深度学习主要运用人工神经网络模拟人的思维决策过程,在无数的实验和应用中已经取得了突破性的进展,比如语音识别、图像分类等。

 

(一):人工智能、机器学习、神经网络和深度学习的关系

(1):artificial intelligence && artificial general intelligence (人工智能和通用人工智能)

  AI: Artificial intelligence (AI) is the intelligence exhibited by machines or software. It is also the name of the academic field of study on how to create computers and computer software that are capable of intelligent behavior.

  AGI: Artificial general intelligence (AGI) is the intelligence of a (hypothetical) machine that could successfully perform any intellectual task that a human being can. It is a primary goal of artificial intelligence research and an important topic for science fiction writers and futurists. Artificial general intelligence is also referred to as strong AI.

  人工智能就是让计算机拥有智能行为,比如机器翻译,给与计算机一句中文,计算机可以自动帮你翻译为英语,这本来是人不断学习才能拥有的能力,现在假如计算机也可以做到,我们就可以说这台计算机拥有了一定的智能水平。我们知道一个普通人要达到一定的智力水平就需要不断地进化和学习,而且学习到各种能力,写作、演讲、驾驶、算术等等,这其实是一个十分复杂的问题,如何让计算机拥有这样的能力,始终是一个巨大的挑战,对人脑的这种学习方法和能力的研究将有助于我们对人工智能的不断探索。通用人工智能,也叫作强人工智能,就是要计算机模拟人类这种复杂的学习能力,在不同知识和领域之间的融会贯通,共同学习和进步。

  计算机的智能应该从两个方面来谈论,一是智能行为,二是智能思考。当前主要停留在智能行为方面,如何让计算机不断和环境交互,智能进化、学习和思考将是未来研究的一个重要挑战。我们知道人脑是处于实时学习和进化中,是一个双向的动态过程,你看到一个新物体,根据已有经验来判断,如果经验判断错误,我们就会知道,并改正错误,这就是一个学习过程。在机器学习的过程中,对于生数据、新的情况,机器会根据已有经验作出判断,但判断的正误的能力很难再通过自学习来调整或优化,其在应用中通常是一个单向的过程,难以更新。

  较早人工智能的测试就是图灵测试(Turing Testing),我们常把这个测试看作是计算机是否真正具有人工智能的试金石。“计算机科学之父”及“人工智能之父”英国数学家阿兰·图灵(1912—1954)在1950年的一篇著名论文《机器会思考吗?》里,提出图灵测试的设想。即把一个人和一台计算机分别隔离在两间屋子,然后让屋外的一个提问者对两者进行问答测试。如果提问者无法判断哪边是人,哪边是机器,那就证明计算机已具备人的智能。直到深度学习(Deep Learning)的出现,让人们看到了一丝曙光,图灵测试已不再是那么遥不可及了。2013年4月,《麻省理工学院技术评论》杂志将深度学习列为2013年十大突破性技术(Breakthrough Technology)之首。

                          

 

(2)machine learning(机器学习)

  “…the design and development of algorithms that allow computers to evolve behaviors based on empirical data, …”

  机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。

 

(3)artificial neural network(人工神经网络)

  Artificial neural networks (ANNs) are a family of models inspired by biological neural networks (the central nervous systems of animals, in particular the brain).

  Artificial neural networks are generally presented as systems of interconnected neurons which exchange messages between each other.

  人工神经网络就是模拟生物神经元的学习过程,将神经元作为最小的学习单元,神经元之间用权重连接,权重的大小代表了神经元之间的关联强弱。学习的过程就是对权重的优化,使得学习的网络可以更好的预测和分析整个决策过程。

                 

 

 

(4)deep learning(深度学习)

  The focus of deep architecture learning is to automatically discover abstractions, from the lowest level features to the highest level concepts.

  Automatically learning features at multiple levels of abstraction allow a system to learn complex functions mapping the input to the output directly from data, without depending completely on human-crafted features.

  •   use a cascade of many layers of nonlinear processing 
  •   are part of the broader machine learning field of learning
  •   representations of data facilitating end-to-end optimization
  •   learn multiple levels of representations that correspond to hierarchies of concept abstraction

  深度学习是在神经网络的基础上构建多层网络来学习复杂的决策过程,其深度组成了复杂的拟合模型,这种模型可以自动发现隐藏在数据中的特征,这些特征是逐层更加抽象的,比如在人脸识别中,底层网络可以学习到鼻子、耳朵这些基本的人脸特征,在多层以后,通过不断的特征学习和抽象,这些高层特征将可以用来判定是不是人脸。这样多层的非线性映射和表示使得学习能力非常强大,同时深度学习通常是一个端到端(end-to-end)的学习过程,直接在输入与输出之间建立复杂的拟合,比如机器翻译给出一句中文,我们输出一句英文,我们的优化准则是直接基于这两句话翻译的好不好,通不通顺,然后整体做优化,而不是局部的。

 (二)artificial neuron (人工神经元)

  在神经网络中,神经元是最基本的构成单元之一,和连接神经元之间的权重组成了整个神经网络,互联的神经元将会实现信号的传递,权重的大小和连接方式(GRU、LSTM、CNN等)控制了整个网络的信息流向和强度。一个神经元会接收到来自多个其他神经元的信号,这些信号经过线性或非线性变换作为神经元的输出。

           

 (三)activation function(激活函数)

   一个神经元神经元只有其量能达到一定的值域的时候,才会处于激活激活,激活函数就是用来估量神经元量能的。

  常用的激活函数:

  1.sigmoid

     函数表达式:               导函数:

  

  函数图形:   

  从图中我们可以看到Sigmoid 的软饱和性,主要在于求导数值较小,在两端数值接近于0,常常会出现梯度消失问题。Sigmoid 的饱和性使得深度神经网络在二三十年里一直难以有效的训练,是阻碍神经网络发展的重要原因。具体来说,由于在后向传递过程中,sigmoid向下传导的梯度包含了一个f'(x) 因子(sigmoid关于输入的导数),因此一旦输入落入饱和区,f'(x) 就会变得接近于0,导致了向底层传递的梯度也变得非常小。此时,网络参数很难得到有效训练。这种现象被称为梯度消失。一般来说, sigmoid 网络在 5 层之内就会产生梯度消失现象。Sigmoid 的饱和性虽然会导致梯度消失,但也有其有利的一面。例如它在物理意义上最为接近生物神经元。 (0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。

  2. tanh

  函数表达式:                                                                       函数导函数:

  

  函数图像:

  tanh(x)=2sigmoid(2x)-1,也具有软饱和性。tanh 网络的收敛速度要比sigmoid快。因为 tanh 的输出均值比 sigmoid 更接近 0,SGD会更接近 natural gradient,从而降低所需的迭代次数。

 

 (3)maxout

  Maxout网络能够近似拟合任意凸函数函数,且当w2,b2,…,wn,bn为0时,退化为ReLU。

(4) Relu

  与传统的sigmoid激活函数相比,ReLU能够有效缓解梯度消失问题,从而直接以监督的方式训练深度神经网络,无需依赖无监督的逐层预训练。ReLU 在x<0 时硬饱和。由于 x>0时导数为 1,所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。但随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。ReLU还经常被“诟病”的一个问题是输出具有偏移现象,即输出均值恒大于零。偏移现象和 神经元死亡会共同影响网络的收敛性。

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM