在机器学习和认知科学领域,这是一种模仿生物神经网络(动物的中枢系統,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。
[描述来源:Wikipedia; URL:https://zh.wikipedia.org/zh-hans/%E4%BA%BA%E5%B7%A5%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C]
目前神经网络有两大主要类型,它们是前馈神经网络(主要是卷积神经网络-CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等子类。深度学习(deep learning)是一种主要应用于神经网络技术以帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,如自动编码器(AutoEncoder)和生成对抗网络(GAN)。
[描述来源:机器之心; URL:https://www.jiqizhixin.com/articles/2017-12-27-5]
了解神经网络的一个好方法是将它看作复合函数。你输入一些数据,它会输出一些数据。
3 个部分组成了神经网络的的基本架构:
- 单元/神经元
- 连接/权重/参数
- 偏置项
你可以把它们看作建筑物的「砖块」。根据你希望建筑物拥有的功能来安排砖块的位置。水泥是权重。无论权重多大,如果没有足够的砖块,建筑物还是会倒塌。然而,你可以让建筑以最小的精度运行(使用最少的砖块),然后逐步构建架构来解决问题。
单元/神经元:
作为神经网络架构三个部分中最不重要的部分,神经元是包含权重和偏置项的函数,等待数据传递给它们。接收数据后,它们执行一些计算,然后使用激活函数将数据限制在一个范围内(多数情况下)。
我们将这些单元想象成一个包含权重和偏置项的盒子。盒子从两端打开。一端接收数据,另一端输出修改后的数据。数据首先进入盒子中,将权重与数据相乘,再向相乘的数据添加偏置项。这是一个单元,也可以被认为是一个函数。该函数与下面这个直线方程类似:
想象一下有多个直线方程,超过 2 个可以促进神经网络中的非线性。从现在开始,你将为同一个数据点(输入)计算多个输出值。这些输出值将被发送到另一个单元,然后神经网络会计算出最终输出值。
权重/参数/连接 (weights/parameters/connection):
作为神经网络最重要的部分,这些(和偏置项)是用神经网络解决问题时必须学习的数值。
偏置项 (bias)
这些数字代表神经网络认为其在将权重与数据相乘之后应该添加的内容。当然,它们经常出错,但神经网络随后也学习到最佳偏置项。
此外,在神经网络中扮演重要角色的还有:
超参数 (hyper parameter):超参数必须手动设置。如果将神经网络看作一台机器,那么改变机器行为的 nob 就是神经网络的超参数。
激活函数 (activation):也称为映射函数(mapping function)。它们在 x 轴上输入数据,并在有限的范围内(大部分情况下)输出一个值。大多数情况下,它们被用于将单元的较大输出转换成较小的值。你选择的激活函数可以大幅提高或降低神经网络的性能。如果你喜欢,你可以为不同的单元选择不同的激活函数。常用的激活函数有Sigmoid函数、Tanh函数、修正线性单元函数(ReLu)、Leaky ReLU等。
层 (layer):这是神经网络在任何问题中都可获得复杂度的原因。增加层(具备单元)可增加神经网络输出的非线性。每个层都包含一定数量的单元。大多数情况下单元的数量完全取决于创建者。但是,对于一个简单的任务而言,层数过多会增加不必要的复杂性,且在大多数情况下会降低其准确率。反之亦然。每个神经网络有一定有两个层:输入层和输出层,二者之间的层称为隐藏层。
[描述及图片来源:关于神经网络:你需要知道这些|机器之心]
神经网络的应用范围很广,主要的领域有图像和视频(如图像识别和分割)、语音和语言(如语音识别和机器翻译)、医疗(如医疗图像诊断)、游戏(如AlphaGo的发明)、机器人(只能机器人是强化学习的主要研究领域)。
发展历史
(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。具体来说,神经网络起源于 Warren McCulloch 和 Walter Pitts 于 1943 年首次建立的神经网络模型。他们的模型完全基于数学和算法,由于缺乏计算资源,模型无法测试。1949年,Hebb发明了赫布学习规则,奠定了神经网络的基石,这是最古老的也是最简单的神经元学习规则。后来,在 1957 年,Frank Rosenblatt 在就职于Cornell航空实验室(Cornell Aeronautical Laboratory)期间创建了第一个可以进行模式识别的模型,改变了现状,即感知器(Perceptron),这是前馈神经网络的早期形式。但是他只提出了 notation 和模型。实际的神经网络模型仍然无法测试,此前的相关研究也较少。第一批可以测试并具有多个层的神经网络于 1965 年由 Alexey Ivakhnenko 和 Lapa 创建。之后,由于机器学习模型具有很强可行性,神经网络的研究停滞不前。很多人认为这是因为 Marvin Minsky 和 Seymour Papert 在 1969 年完成的书《感知机》(Perceptrons)导致的。他们发现了神经网络的两个关键问题。第一是基本感知机无法处理XOR问题。第二个重要的问题是电脑没有足够的能力来处理大型神经网络所需要的很长的计算时间。
然而,这个停滞期相对较短。6 年后,即 1975 年,Paul Werbos 提出反向传播,解决了 XOR 问题,并且使神经网络的学习效率更高。直达目前,神经网络模型也通常是通过反向传播算法应用梯度下降训练的。1982年的Hopfield网络运用循环连接的结构模拟人类的联想记忆,开启了循环神经网络的早期研究。同时期还有1990年的Elman网络(也称Simple Reccurent Network,SRN),运用了反向传播算法(BP)来训练并进行序列预测,对当时的认知科学及语音处理有着深远影响。1997年Hochreiter和Schmidhuber发明了长短期记忆网络(Long Short-Term Memory, LSTM),其核心贡献是为RNN创造了信号梯度能长时间持续流动的机制。 它通过门控RNN中计算单元的自循环,使得网络中信息累计的时间尺度能动态地改变。LSTM在后来的许多应用中都取得了巨大成果,包括手写识别,语音识别,机器翻译等。同年,双向循环神经网络(Bidirectional RNN)被提出,考虑了在某些序列任务中,预测的输出可能依赖于整个输入序列,从而导致某时刻的状态既有过去(前向)的依赖关系,也有未来(反向)的依赖关系。
尽管初期神经网络的分类效果就不错,但由于其对数据和计算资源的严苛要求,并没有合适的应用场景,长期以来也就一直相对冷门。直到21世纪,随着大数据和计算性能的飞速发展,加之其算法方面的一些微创新,不同类型的神经网络开始全面开花,尤其广泛应用在计算机视觉(主要是CNN的使用)、自然语言处理(主要是RNN的使用)、机器人等领域,掀起了一波人工智能热潮。2009 年至 2012 年间,Jürgen Schmidhuber 研究小组创建的循环神经网络和深度前馈神经网络获得了模式识别和机器学习领域 8 项国际竞赛的冠军。2012年以来,科技巨头如谷歌、苹果、Facebook等均开始将神经网络(主要是CNN)使用在其相册应用中做人脸/物体的识别。2014年前后出现的序列到序列(Sequence to Sequence)模型,特别是基于编码-解码(Encoder - Decoder)的架构,对机器翻译,机器理解等领域产生了重大影响。2015年Bahdanau在机器翻译中引入了将原始序列元素和输出序列元素相关联的注意力机制,进一步使得神经机器翻译(Neural Machine Translation, NMT)得到大幅提高。 知名的谷歌翻译(Google Translate)便基于此,并已实现10多个语种之间的高效翻译。2016年,Gao Huang等学者从 ResNet 的恒等/跳跃连接(identity/skip connections)中直接获取灵感,于2016年提出了DenseNet,它们可以缓解消失梯度问题,加强特征传播,鼓励特征重用以及大幅减少参数数量。VGG、ResNet等著名的CNN架构也都是在这一时段提出的。
同时伴随着GAN的提出,越来越多基于GAN的试验性应用被开发出来自动生成文本、图像、视频、语音等多媒体。可以看出,经过了这么多年的发展,神经网络技术终于开始从工程步入应用阶段。有关神经网络的研究也变得更多元化,阿姆斯特丹大学的研究组专注于面向球面图像的分析模型,2018年他们提出了球面 CNN 理论;对于球面和三维特殊正交群 的广义傅里叶变换给出了首个可自动微分的实现,其提供的开源的 PyTorch 代码使用简单、运算快速,且内存使用效率高;并就球面 CNN 对旋转不变类学习问题的适用性给出了实证支持。同年,北京大学提出基于CNN、能够根据论文的 LaTeX 源文件和元信息自动地对学术论文进行评分。其他的例子还有如来自卡内基梅隆大学和谷歌大脑的研究者在 arXiv 上发布的论文,他们提出一种新型问答模型 QANet,该模型去除了该领域此前常用的循环神经网络部分,仅使用卷积和自注意力机制,性能大大优于此前最优的模型。
主要事件
年份 | 事件 | 相关论文/Reference |
1943 | WarrenMcCulloch 和 Walter Pitts 首次建立了神经网络模型 | McCulloch, W. S.; Pitts, W. (1943). A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics. 5(4): 115–133. |
1949 | Hebb提出了Hebbian Learning, 是神经网络学习的基础之一 | Hebb, D. O. (1949). The organization of behavior; a neuropsychological theory. |
1957 | Frank Rosenblatt 提出「感知器」,可以被视为一种最简单形式的前馈神经网络 | Rosenblatt, F. (1957). The perceptron, a perceiving and recognizing automaton Project Para. Cornell Aeronautical Laboratory. |
1965 | 第一批可以测试并具有多个层的神经网络由 Alexey Ivakhnenko 和 Lapa 创建 | Ivakhnenko, A. G.; Grigorʹevich Lapa, V. (1967). Cybernetics and forecasting techniques. American Elsevier Pub. Co. |
1969 | Marvin Minsky 和 Seymour Papert 在他们的《Perceptrons》一书中指出了感知器的不少局限 | Minsky, M., & Papert, S. (1969). Perceptrons. |
1982 | Hopfield网络提出 | Hopfield, J. (1982). "Neural networks and physical systems with emergent collective computational abilities", Proc. NatL Acad. Sci. USA, Vol. 79 (pp. 2554-2558). |
1988 | Rumelhart, Hinton et al 重新发现了反向传播,并将其进一步发扬光大 | Rumelhart, D. E., Hinton, G. E., & Williams, R. J. (1988). Learning representations by back-propagating errors. Cognitive modeling, 5(3), 1. |
1990 | 神经网络技术(CNN)开始被用于手写识别 | LeCun, Y., Boser, B. E., Denker, J. S., Henderson, D., Howard, R. E., Hubbard, W. E., & Jackel, L. D. (1990). Handwritten digit recognition with a back-propagation network. In Advances in neural information processing systems (pp. 396-404). |
1990 | Elman网络提出 | Elman, Jeffrey L. (1990). "Finding Structure in Time". Cognitive Science. 14 (pp. 179–211). |
1997 | Sepp Hochreiter 和 Jürgen Schmidhuber 提出了长短期记忆循环神经网络-LSTM | Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural computation, 9(8), 1735-1780. |
2003 | Bengio 的首次将神经网络整合到了语言模型中,启发了神经网络在自然语言处理(NLP)领域的应用 | Bengio, Y., Ducharme, R., Vincent, P., & Jauvin, C. (2003). A neural probabilistic language model. Journal of machine learning research, 3(Feb), 1137-1155. |
2006 | 深度信念网络(Deep Belief Network) 发表,深度学习的研究热潮自此开始慢慢展开 | Hinton, G. E., Osindero, S., & Teh, Y. W. (2006). A fast learning algorithm for deep belief nets. Neural computation, 18(7), 1527-1554. Hinton, G. E., & Salakhutdinov, R. R. (2006). Reducing the dimensionality of data with neural networks. science, 313(5786), 504-507. |
2011 | Microsoft将DNN用于语音识别 | Deng, L., & Yu, D. (2011). Deep convex net: A scalable architecture for speech pattern classification. In Twelfth Annual Conference of the International Speech Communication Association. |
2012 | AlexNet 在 ImageNet 比赛获胜,展现了神经网络技术在图像识别领域的特长 | Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems (pp. 1097-1105). |
2014 | 提出了深度延伸的VGG网络结构 | Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556. |
2014 | Ian Goodfellow et al. 提出了生成对抗网络(GAN),这是一种无监督学习方法 | Goodfellow, I., Pouget-Abadie, J., Mirza, M., Xu, B., Warde-Farley, D., Ozair, S., ... & Bengio, Y. (2014). Generative adversarial nets. In Advances in neural information processing systems (pp. 2672-2680). |
2014 | Google研究提出基于序列到序列(seq2seq)的机器翻译模型 | Sutskever, I., Vinyals, O., & Le, Q. (2014). "Sequence to Sequence Learning with Neural Networks", arXiv preprint arXiv:1409.3215v3, 2014. |
2016 | 提出机器翻译中的注意力机制 | Bahdanau, D., Cho, K., & Bengio, Y. (2016). "Neural Machine Translation by Jointly Learning to Align and Translate", arXiv preprint arXiv:1409.0473, 2016. |
2016 | 提出了Resnet,解决DNN隐藏层过多时的退化问题 | He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778). |
2016 | Gao Huang等学者提出了DenseNet | Huang, G. et al. (2016). Densely Connected Convolutional Networks. arXiv:1608.06993. |
2017 | 结合resnet,得到了更深的优化inception-v4模型 | Szegedy, C., Ioffe, S., Vanhoucke, V., & Alemi, A. A. (2017, February). Inception-v4, inception-resnet and the impact of residual connections on learning. In AAAI (Vol. 4, p. 12). |
2018 | 阿姆斯特丹大学的研究组提出了球面 CNN 理论 | Cohen, T. S. et al. (2018). SPHERICAL CNNS. ICLR 2018. |
2018 | 北京大学提出基于CNN的学术论文自动评分模型 | Yang, P.; Sun, X.; Li, W.; Ma, S. (2018). Automatic Academic Paper Rating Based on Modularized Hierarchical Convolutional Neural Network. arXiv:1805.03977. |
2018 | 卡内基梅隆大学和谷歌大脑的研究者提出一种新型问答模型 QANet,该模型去除了该领域此前常用的循环神经网络部分,仅使用卷积和自注意力机制 | Yu, A. W. et al. (2018). QANET: COMBINING LOCAL CONVOLUTION WITH GLOBAL SELF-ATTENTION FOR READING COMPREHENSION. ICLR. |
发展分析
瓶颈
-神经网络的应用领域相对有限。
-神经网络的工作机制就像「黑箱」;我们难以确定它学习到了什么,而且神经网络难以解读的缺点也饱受诟病;
-计算能力和数据量一直都是影响神经网络表现水平的关键因素。尽管现在是大数据时代,在深度学习的帮助下,神经网络已经非常好了,但训练的成本依然很高。
-不同的任务需要不同的神经网络架构,我们离通用人工智能仍然还有很长的距离;
-神经网络对超参数的取值比较敏感,但如何确定超参数的取值并没有确定的方法,训练时往往需要花费大量的时间调优;
未来发展方向
随着计算能力和大数据的持续发展,深度神经网络的准确度和速度有望提升到近似人类的理想水平,因此可以预见在不久的将来就会出现神经网络驱动的高智能机器人。另外,要想要突破到通用人工智能十平,神经网络模型必须能够在各项任务上都有稳定表现。
Contributor:Yuanyuan Li, Mos Zhang