内容概况:
在 NLP 的发展脉络里,特别提及了三位对近代人工智能及 NLP 进步有着重大影响力的人物。
首先是杰弗里・辛顿(Geoffrey Hinton)教授,他被尊称为 “深度学习之父”。早在 20 世纪七八十年代,辛顿教授便全身心投入到神经网络的研究中。他凭借着一系列极具开创性的论文,成功论证了 BP 反向传播算法在多层感知机中的应用,为深度学习后续的蓬勃发展筑牢了根基。其研究成果宛如一盏明灯,照亮了深度学习领域前行的道路,吸引着无数后来者投身其中。
其次是杨立昆(Yann LeCun),也被音译为莱昆。他堪称 “卷积神经网络之父”,在贝尔实验室工作期间,积极推动卷积神经网络的实际应用,尤其在数字识别领域成果斐然。他所构建的如 LeNet 等经典模型,不仅实现了高精度的数字识别,更为卷积神经网络在图像识别等更广泛领域的应用铺就了基石,让卷积神经网络从理论设想逐步走向实际应用的舞台。
还有一位同样举足轻重的学者,他的贡献广泛覆盖了 AI 架构、神经网络语言模型等多个关键领域。在 AI 架构方面,他提出的创新理念优化了系统的整体框架,提升了运行效率;在神经网络语言模型领域,其研究成果革新了语言处理的方式,使得机器对自然语言的理解和生成能力实现了质的飞跃,对深度神经网络的全方位发展产生了极为深远的影响。
通过阐述这些学者的故事,激励大家在追求个人事业或目标的道路上,要如同这些先驱一般,拥有坚定不移的信念和持之以恒的毅力,不惧困难与挫折,方能在自己的领域取得非凡成就。
说完NLP的发展历史后,我们来看看关键人物。在讲述NLP历史时,已提及不少老一辈人物。但还需特别介绍推动近代及近些年人工智能、NLP发展的几位人物。当然,我在这里只介绍三个,2018 年获得图灵奖的三位科学家分别是杰弗里・辛顿(Geoffrey Hinton)、扬・勒丘恩(Yann LeCun)和约书亚・本吉奥(Yoshua Bengio),他们被广泛认为是 “深度学习三巨头”,为深度学习的发展和人工智能领域的进步做出了卓越贡献。
谷歌公司副总裁、工程研究员,多伦多大学名誉教授。他是神经网络领域的先驱者之一,在反向传播算法、玻尔兹曼机等方面有深入研究,提出了许多重要的理论和方法,对深度学习的复兴和发展起到了关键作用,被广泛认为是 “深度学习之父”。
Hinton教授,其实他从70年代的时候就一直在搞这个神经网络,他最重要的贡献。就是在八几年的时候去证明了,使用BP反向传播可以发现这个多层感知机的内部表达,或者简单来说就是。他发论文证明了这个BP反向传播适用于这个深度神经网络,这个非常重要,因为在当时的学习界,人们认为这个深度神经网络不可训练。没有办法训练多层感知机,然后他通过那篇论文证明了这个反向传播是可以用到这里面的,然后随后才有了那些深度学习模型的发展,
当然Hinton还有一些很多其他的贡献,比较出名的玻尔兹曼机,玻尔兹曼机便是其极具代表性的成果。这是一种基于能量函数的随机神经网络,能对数据的概率分布进行建模。在早期,机器学习面临着学习复杂数据分布的难题,玻尔兹曼机通过引入随机神经元,利用马尔可夫链蒙特卡罗方法来学习数据的联合概率分布,为解决这一难题提供了创新思路,尽管它在训练时计算量极大,但为后续神经网络的发展提供了重要的理论基础,启发了受限玻尔兹曼机等一系列改进模型的诞生,在图像识别、特征学习等领域有着潜在应用。
2012 年,Hinton 与学生共同创造的 AlexNet 更是在计算机视觉领域掀起一场革命。当时,传统图像识别方法在面对大规模、复杂图像数据集时性能受限。AlexNet 架构采用了多个卷积层和全连接层,首次引入 ReLU 激活函数,有效解决了传统 Sigmoid 函数在深度网络中梯度消失的问题,大幅提升了网络训练效率;还创新性地使用了 Dropout 技术,防止模型过拟合。在当年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)中,AlexNet 以远超第二名的成绩夺冠,错误率大幅降低,这一成果让整个学术界和工业界看到了深度神经网络在图像识别任务中的巨大潜力,直接引发了深度学习在计算机视觉乃至整个机器学习领域的研究热潮,众多企业和研究机构纷纷投身深度学习研究,推动了相关技术在安防监控、自动驾驶、医学影像分析等多个领域的快速落地应用 。
纽约大学教授,Meta(Facebook)首席人工智能科学家。他被誉为 “卷积网络之父”,在卷积神经网络方面有开创性的工作,提出了 LeNet-5 模型,是世界上第一个正式的卷积神经网络,为图像识别等领域的发展提供了重要的技术支持。
他有个中文名叫杨立昆,我在网上看过,应该他自己给自己起的。卷积神经网络应该从原则上来说不是创造的。但是他丰富了卷积神经网络,并且逐渐地把这个卷积网络运用起来了,然后我还特意从这个网上找了一个这个图片,大家注意,这个时间点是一九九三年。
早在 1993 年,杨立昆(LeCun)于贝尔实验室工作期间,便带领团队实现了数字识别。值得注意的是,那时,我们如今最为常用的手写数字识别基础数据集 MNIST 都尚未问世。在缺乏这一关键资源的情况下,他们竟能取得如此成果,着实令人惊叹。杨立昆无疑是一位天才型人物,他在贝尔实验室潜心钻研长达 20 年,期间还曾负责数据处理相关工作,积累了极为深厚的经验,为后续在卷积神经网络领域的重大突破奠定了坚实基础。
杨立昆,他不只是让卷积神经网络火起来,还在这项技术的发展上做出了很多开创性的贡献。他早在1989年就搞出了一个早期版本的卷积神经网络,叫做LeNet,专门用来给图片分类。这个网络有两个卷积层和两个全连接层,比以前的网络复杂多了,结构上跟现在的卷积神经网络差不多。到了1998年,他和别人一起搞出了一个更完整的版本,叫LeNet-5。LeNet-5和它的各种变体,基本上奠定了现代卷积神经网络的基础。这个网络里交替出现的卷积层和池化层,能有效地提取图像的特征,而且不受图像位置变化的影响。
杨立昆在搞LeNet的时候,用随机梯度下降(SGD)来学习,还随机初始化了权重。这个方法后来被深度学习界广泛采纳。他还把卷积神经网络用在了真实世界的应用中。LeNet后来被金融和邮政行业用来识别信件和支票上的数字和条码,证明了基于反向传播算法的卷积神经网络是靠谱的,也让这项技术受到了更多关注。
杨立昆还特别推崇学术界和工业界的合作,提出了“双重联盟”的概念,让学者和工业界互相交流,共同推动了人工智能技术,比如卷积神经网络,在学术界和工业界的发展。
加拿大蒙特利尔大学教授,魁北克人工智能研究所(Mila)科学主任。他的研究主要集中在深度学习和人工智能领域,尤其是在自然语言处理方面做出了重要贡献,为神经网络语言模型等技术的发展奠定了基础,推动了人工智能在自然语言理解和生成等方面的进步。
Yoshua Bengio,是我在这三个人物里面,我觉得最为敬佩的一个人物。他是一位纯粹的理论研究学者,对深度学习和神经网络研究做出了巨大贡献。他的担忧和对未来的警示,以及在人工智能领域的成就,都让我深感敬佩。据说他的论文引用量高达17万,这表明他的研究对学术界有着深远的影响。你看他有两篇论文,他的《Learning Deep Architectures for AI》这篇论文应该是在说这个AI架构,这个可能不太熟悉,但这篇论文《a national probabilistic language model》我熟悉就是基于这个神经网络的语言模型,这个论文基本上是我们近代就是使用神经网络去做nlp的开篇之作。
约书亚・本吉奥(Yoshua Bengio)堪称一位全才。在强化学习(RL)领域,他展现出卓越的专业能力,成果斐然。在云计算领域,他同样有所建树,作出了不可忽视的贡献。即便是在图像领域,他也凭借深入研究取得了一定成就。前些年备受瞩目的生成对抗网络(GAN),他亦深度参与其中。例如,我们常用的 ReLU 激活函数,其基础应用的相关论文就出自他手。又如深度神经网络中诸多关键技巧,像 Xavier 初始化等方法的论文,大多也与跟这位大叔密切相关。
回顾人工智能的发展历程,我们见证了数次潮起潮落。早在八九十年代,深度神经网络便已崭露头角,例如杨立昆(LeCun)运用其构建的 CNN 模型成功实现了数字识别。然而,彼时深度神经网络却处于科学的边缘地带,亦游离于 AI 的主流视野之外。在 20 世纪 80 年代至 90 年代期间,人们普遍认为深度神经网络荒诞不经。以多层感知机为例,其训练过程既不稳定,又极为耗费资源,在工业界毫无应用的可能性,学术界也对其前景并不看好。
但杰弗里・辛顿(Geoffrey Hinton)却始终坚守。在各大顶尖学术会议以及发表的诸多论文中,辛顿笃定地指出深度神经网络拥有无限潜力。他坚信,无论是数据挖掘、分类,还是回归任务,深度神经网络都将展现出顶尖的性能。尽管当时辛顿团队拥有自己的实验室,且收入尚可,但由于他们所钻研的内容未获广泛认可,内心仍充满了苦闷。
直到 2000 年之后,随着算力的逐步提升,深度神经网络终于迎来了曙光。2012 年,AlexNet 横空出世,一举打破人们的常规认知,彻底改变了 AI 的发展轨迹。从那时起,一系列神奇的 AI 应用如雨后春笋般涌现。以生成对抗网络(GAN)为例,它能够自动生成图像,无论是动漫图片,还是足以以假乱真的摄影作品,其效果宛如魔术。倘若没有辛顿等先驱们的执着坚守,我们便无缘见证如今这些令人惊叹的 AI 成果
所以我是觉得就是如果大家真的想从事某一行业,或者说大家真的想去在某一行业内有所建树的话,一定要坚持下去。
一个简单的使用反向传播算法进行线性回归的 Python 案例代码,通过这个案例你可以直观了解反向传播的基本原理和实现过程
import numpy as np
# 生成一些随机数据用于演示
np.random.seed(0)
X = np.random.randn(100, 1)
y = 3 * X + 2 + np.random.randn(100, 1) * 0.5
# 初始化权重和偏置
weights = np.random.randn(1, 1)
bias = np.random.randn(1)
# 定义学习率和迭代次数
learning_rate = 0.01
num_iterations = 1000
for iteration in range(num_iterations):
# 前向传播
y_pred = np.dot(X, weights) + bias
# 计算损失(均方误差)
loss = np.mean((y_pred - y) ** 2)
# 反向传播计算梯度
d_loss = 2 * (y_pred - y) / X.shape[0]
d_weights = np.dot(X.T, d_loss)
d_bias = np.sum(d_loss)
# 更新权重和偏置
weights -= learning_rate * d_weights
bias -= learning_rate * d_bias
if iteration % 100 == 0:
print(f"Iteration {iteration}, Loss: {loss}")
print(f"最终权重: {weights}, 最终偏置: {bias}")
在这段代码中,我们首先生成了一些随机的输入数据 X 和对应的标签 y 用于模拟线性回归任务。接着初始化了权重 weights 和偏置 bias。在每次迭代中,通过前向传播计算预测值 y_pred 并计算损失 loss。然后利用反向传播计算损失关于权重和偏置的梯度 d_weights 和 d_bias,最后根据梯度和学习率更新权重和偏置。每 100 次迭代打印一次损失值,最终输出训练完成后的权重和偏置。
下一章节内容 NLP任务分类了解
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。