神经网络入门

历史上,科学家一直希望模拟人的大脑,造出可以思考的机器。人为什么能够思考?科学家发现,原因在于人体的神经网络。

上图的圆圈就代表一个感知器。它接受多个输入(x1,x2,x3...),产生一个输出(output),好比神经末梢感受各种外部环境的变化,最后产生电信号。

为了简化模型,我们约定每种输入只有两种可能:1或0。如果所有输入都是1,表示各种条件都成立,输出就是1;如果所有输入都是0,表示条件都不成立,输出就是0。

下面来看一个例子。城里正在举办一年一度的游戏动漫展览,小明拿不定主意,周末要不要去参观。

他决定考虑三个因素。

这就构成一个感知器。上面三个因素就是外部输入,最后的决定就是感知器的输出。如果三个因素都是Yes(使用1表示),输出就是1(去参观);如果都是No(使用0表示),输出就是0(不去参观)。

看到这里,你肯定会问:如果某些因素成立,另一些因素不成立,输出是什么?比如,周末是好天气,门票也不贵,但是小明找不到同伴,他还要不要去参观呢?

现实中,各种因素很少具有同等重要性:某些因素是决定性因素,另一些因素是次要因素。因此,可以给这些因素指定权重(weight),代表它们不同的重要性。

上面的权重表示,天气是决定性因素,同伴和价格都是次要因素。

如果三个因素都为1,它们乘以权重的总和就是8+4+4=16。如果天气和价格因素为1,同伴因素为0,总和就变为8+0+4=12。

这时,还需要指定一个阈值(threshold)。如果总和大于阈值,感知器输出1,否则输出0。假定阈值为8,那么12>8,小明决定去参观。阈值的高低代表了意愿的强烈,阈值越低就表示越想去,越高就越不想去。

上面的决策过程,使用数学表达如下。

上面公式中,x表示各种外部因素,w表示对应的权重。

单个的感知器构成了一个简单的决策模型,已经可以拿来用了。真实世界中,实际的决策模型则要复杂得多,是由多个感知器组成的多层网络。

上图中,底层感知器接收外部输入,做出判断以后,再发出信号,作为上层感知器的输入,直至得到最后的结果。(注意:感知器的输出依然只有一个,但是可以发送给多个目标。)

为了方便后面的讨论,需要对上面的模型进行一些数学处理。

感知器模型就变成了下面这样。

一个神经网络的搭建,需要满足三个条件。

也就是说,需要事先画出上面出现的那张图。

其中,最困难的部分就是确定权重(w)和阈值(b)。目前为止,这两个值都是主观给出的,但现实中很难估计它们的值,必需有一种方法,可以找出答案。

这种方法就是试错法。其他参数都不变,w(或b)的微小变动,记作Δw(或Δb),然后观察输出有什么变化。不断重复这个过程,直至得到对应最精确输出的那组w和b,就是我们要的值。这个过程称为模型的训练。

因此,神经网络的运作过程如下。

可以看到,整个过程需要海量计算。所以,神经网络直到最近这几年才有实用价值,而且一般的CPU还不行,要使用专门为机器学习定制的GPU来计算。

下面通过车牌自动识别的例子,来解释神经网络。

所谓"车牌自动识别",就是高速公路的探头拍下车牌照片,计算机识别出照片里的数字。

一组已经识别好的车牌照片,作为训练集数据,输入模型。不断调整各种参数,直至找到正确率最高的参数组合。以后拿到新照片,就可以直接给出结果了。

上面的模型有一个问题没有解决,按照假设,输出只有两种结果:0和1。但是,模型要求w或b的微小变化,会引发输出的变化。如果只输出0和1,未免也太不敏感了,无法保证训练的正确性,因此必须将"输出"改造成一个连续性函数。

这就需要进行一点简单的数学改造。

首先,将感知器的计算结果wx+b记为z。

z=wx+b然后,计算下面的式子,将结果记为σ(z)。

σ(z)=1/(1+e^(-z))这是因为如果z趋向正无穷z→+∞(表示感知器强烈匹配),那么σ(z)→1;如果z趋向负无穷z→-∞(表示感知器强烈不匹配),那么σ(z)→0。也就是说,只要使用σ(z)当作输出结果,那么输出就会变成一个连续性函数。

原来的输出曲线是下面这样。

现在变成了这样。

实际上,还可以证明Δσ满足下面的公式。

即Δσ和Δw和Δb之间是线性关系,变化率是偏导数。这就有利于精确推算出w和b的值了。

(正文完)

=============================================

本课程的重点是讲解如何应用CSS框架和JavaScript框架,做出高性能、高可用性的产品,并且使用测试工具保证代码质量。学习过程中,学员必须完成以下课堂练习。

该课程是纳米学位课程,学员提交的每一行代码都有导师codereview,并且每周可以预约导师一对一辅导,对于提高个人能力极有帮助。

(完)

Ricky说:

阈值

Ming说:

阈打成了阙

徐说:

阮一峰说:

@Ricky@Ming:

谢谢指出,已经改正。

JSK说:

既然思考的基础是神经元,如果能够"人造神经元"(artificialneuron),就能组成人工神经网络,模拟思考。…

世界上这么多AI研究者,有几个真的研究过人脑,解刨过人脑,拿它做过实验,或者读过脑科学的研究成果?最后你发现,几乎没有AI研究者真正做过人脑或者认知科学的研究。著名的认知科学家DouglasHofstadter早就在接受采访时指出,这帮所谓“AI专家”,对人脑和意识(mind)是怎么工作的,其实完全不感兴趣,也从来没有深入研究过,却号称要实现“通用人工智能”(ArtificialGeneralIntelligence,AGI),这就是为什么AI直到今天都只是一个虚无的梦想。

ClayIdols说:

浅显易懂,拜谢

zhoukekestar说:

RyuGou说:

作为一个金融学专业的博士,您是如何在计算机领域呼风唤雨的

www说:

这段没明白“阈值的高低代表了意愿的强烈,阈值越低就表示越想去,越高就越不想去。”阈值高低与想不想去是自己定义的还是有硬性规定?有没有看懂的楼友回答一下

tonydong说:

一如既往的清晰明了

soul说:

引用www的发言:这段没明白“阈值的高低代表了意愿的强烈,阈值越低就表示越想去,越高就越不想去。”阈值高低与想不想去是自己定义的还是有硬性规定?有没有看懂的楼友回答一下

Asimov说:

结合上面小明看漫展的例子,这里的阈值是一个量化小明是否去漫展的关键数字。

我们将天气、价格和同伴这三个关键因素(X)分别赋予了不同的权重(W):8、4、4,假设条件满足那么X=1,不满足则X=0,如果三个条件都满足,那么最终得分就是8+4+4=16,否则为其他W*X的值。

但是只凭这一个值还是无法决定小明是否要去漫展,因为缺少一个比较因素,而这个“阈值”就是比较因素:我们假设阈值为10,如果W*X>10小明去漫展,如果W*X<=10小明不去漫展。

那么很明显这个阈值就代表了小明去漫展的欲望强度,如果阈值越低则得分越容易超过,则小明就越容易去漫展,或者相反。例如:如果阈值=2,那么天气、价格、同伴只要任意满足其中的一个条件,小明就会去漫展。

annoy说:

新时代的逻辑学

szpzs说:

赞!非常简单易懂。哈哈,我也神经网络入门了。

timguole说:

图像识别,下各种棋类都不能算是什么“人工智能”。充其量就是死板的数学模型+超快的运算速度。

哈哈说:

引用timguole的发言:图像识别,下各种棋类都不能算是什么“人工智能”。充其量就是死板的数学模型+超快的运算速度。

那啥是人工智能

长安说:

人类也是一样的

喵小哥说:

文中算法的得到结果是一个概率:应该改为“算法得到的结果是一个概率”。

CD说:

人工智能不应该是模仿人脑的,就像现在的飞机也不是模仿鸟的飞翔。

付超说:

论重读高数的重要性。

JinhaoPlus说:

@JSK:

哈哈,毕竟生物学和计算机科学的交叉学者的出现真的是好难啊!

刘同周说:

把人工智能跟人脑的神经结构扯在一起,真是一个巨大的骗局

唐健说:

引用刘同周的发言:把人工智能跟人脑的神经结构扯在一起,真是一个巨大的骗局

多层次神经网络模型确实灵感来自于生物学

Moon说:

真是浅显易懂

faremax说:

这个感觉做几个demo还行,但是研究透了对数学要求好高。

solus说:

原文:阈值的高低代表了意愿的强烈,阈值越低就表示越想去,越高就越不想去。

疑惑:这里应该是说总分越高越想去,并不是阈值越高越想去。阈值是表征难度,阈值越高,越难去。

modle说:

由此看来,AI是基于判断和决策的喽

Yvan说:

表示完全不能认同,人工智能的确有夸大的成分,但在很多领域它都开始崭露头角,如果如作者所说,人工智能不可能实现,那霍金、马斯克也不用担心人工智能的危害了。最终智能能不能实现的确不好判断,但是在很多方面它的确是有用的,无论是语音识别、图像识别还是自动驾驶。

周涛说:

我一直搞这个,还是您讲的浅显易懂,haha

sec说:

盖饭说:

引用JSK的发言:世界上这么多AI研究者,有几个真的研究过人脑,解刨过人脑,拿它做过实验,或者读过脑科学的研究成果?最后你发现,几乎没有AI研究者真正做过人脑或者认知科学的研究。著名的认知科学家DouglasHofstadter早就在接受采访时指出,这帮所谓“AI专家”,对人脑和意识(mind)是怎么工作的,其实完全不感兴趣,也从来没有深入研究过,却号称要实现“通用人工智能”(ArtificialGeneralIntelligence,AGI),这就是为什么AI直到今天都只是一个虚无的梦想。

赞同。我最近开始研究心理学,发现很多心理学的模型可以借鉴到AI来

dou3516说:

引用solus的发言:原文:阈值的高低代表了意愿的强烈,阈值越低就表示越想去,越高就越不想去。

HYW说:

代飞说:

跨界人才很厉害,但也很稀少,更多是需要合作啦,比如现在的写代码的有几个人见过客户?研究人脑的AI专家不多,但借鉴或者说的启发的不少,至于非要说启发的两者之间没有任何关系,那比如你能说今天吃饭的方式是借鉴了昨天便便的长度么?明白人一眼能看出这有毛线的启发关系

Miwoy说:

我的神经网络与遗传算法是通过一本书了解的,叫《游戏编程中的人工智能技术》,我必须推荐这本书,作者用几乎小学生水平的数学知识讲解了人工智能,不希望这么好的书就此埋没。

并且顺口一提的是,深度学习是不能解决人工智能问题的。

姚屹晨说:

坐井观天说:

因为阈值越低,你前面计算的w和x的点积就越容易大于它,从而输出1,不知道这样理解正不正确

wu说:

重新深刻而清晰的学到"权重"和"阈值"的意义,谢谢大师

Ivan说:

赞,今天重新阅读一遍,还是有收获:1,之前不太理解输入还需要加一个偏置值b的原因,现在知道b的意义是负阈值2,为了让输出具有连续性的意义,对值域[-R,R]做了一次映射(0,1),匹配概率上的意义

夏幻说:

b是否是biases呢。。。如果是的话是否应该翻译成偏移呢?

阿驹说:

《终极算法——机器学习和人工智能如何重塑世界》

希冀在天涯说:

简直了,通俗易懂。

Lostboy船长说:

承影说:

感觉太好了,豁然开朗

ddd说:

如果三个条件都满足,但是小明有惰性,不想去,因为他以前就是一个不太喜欢出去玩的人,那这个在神经网络中如何体现呢

Tony说:

引用ddd的发言:如果三个条件都满足,但是小明有惰性,不想去,因为他以前就是一个不太喜欢出去玩的人,那这个在神经网络中如何体现呢

可能需再加一层网络来表示惰性。比如之前上一层的z值作为输入,惰性根据这个输入再输出一个值来决定最终去还是不去。

Molly说:

浅显易懂,是不是可以理解为线性规划求解呢?

szm说:

阮老师,人工智能是算法的累加,和编程语言无关,我这么理解对吗?针对不同的领域,可以用不同的语言,但是实现起来效率就不一定了。。

Hpp说:

写的超级棒的!因为建模比赛才了解的这些东西,感觉打开了新世纪大门,感谢阮老师

元说:

写的特别好,谢谢老师!

菜鸟一号说:

一级棒,给刚入门的人看都能看懂,而且用sigmoid函数将离散的结果连续化,真的太巧妙了。

干嘛都都都说:

我觉得这位说的好,但是AI研究者不是不想研究人脑,实在是不好研究啊,你说找个活的研究还是死的研究啊,死了一点点解刨神经元研究,还是活着在脑子上插上无数管子研究呢?脑研究只要有突破,AI算个P啊,照葫芦画瓢而已。人工通用智能(这个顺序念才对)就是和人类智能达到一个原理但性能更好的地步,说的通俗一点,就是人造人。现在的人工智能还是把人类成熟的思想变成算法输入给程序,程序才工作。想说点别的。这个世界的规律不会因人的思维而改变,也不会因为机器的思维而改变,怕个鸟啊!怕孩子超过自己而不生孩子,傻不傻啊!孩子真正顶天立地的时候会在乎父母那点财产?把孩子教的愚昧无知才是自取灭亡。希望走在前面的人不要束手束脚,你做错了自会有人来惩罚你的,但是勇敢的尝试才是伟人之行。活在当下,活在当下,活在当下。

xinyuan说:

非常好懂,谢谢。

asmfeng说:

写的真棒,谢谢老师

一个无名小卒说:

阮老大不管你信不信,我已经从理论上设计出真正的人工智能。

Somnus说:

写得很好,会一直支持、学习。

孙说:

人工智能的本质和程序模型有内核上的区别。按照你的算法如果小明三条条件都符合甚至按递归算法小明所有输出都是1那么我们可以说小明百分之一百会去漫展吗。当然不所以现在多数ai算法都是伪算法直觉是什么意识是什么思维是什么这些东西我们自己都搞不清楚我举一个最简单的例子我们抛一个硬币我们可以说抛硬币是概率事件这时人脑接收一个信息硬币不是正面就是反面问题是你怎么知道这是一个概率事件如果概率事件本身是一个确定事件那么人脑在思考这个事件时是确定事件还是随机事件?

侯伟说:

aaa说:

Antares说:

同意这个观点,我个人感觉两者的关系就仅仅是处理模式相似。

甚至我个人觉得“神经元”概念更类似于程序里面的函数,都是输入->处理->输出的这个过程,神经网络就是结合海量的函数。

Andy说:

您好,两个四输入的神经网络能否通过耦合成一个八输入的神经网络,从而在实现其预测功能的情况下解决训练数据库过大的情况。

明王朝说:

深度好文

小猫说:

感谢,浅显易懂,虽然一些数学上的公式没看懂,但整个原理都理解了,感谢大神!

大毛公主说:

和老师上课的课件一起看的比老师讲的好!小学鸡感谢您一定要继续更呀!

夏康钊说:

一峰大佬,我甚至关于tcp/ip,引用了你的解释方式制作在了视频,很喜欢你的解释,也很感谢你的指导!

WillXiao说:

讲得太少了,不过瘾

Lijiahai说:

哇真的浅显易懂

Robert说:

Doria说:

丫丫说:

看了很多篇关于神经网络的介绍,还是这篇讲得好,浅显易懂,让我明白了什么是神经网络,强推!

莫铭说:

写的超级好,要是能看到整本书的整理版就好了.

错错说:

阈值设定为16,这样就算三个条件都满足了也不会去

yuanwenyu说:

yue说:

Tintalle说:

引用长安的发言:

如果权重可以瞬时发生剧烈的变动,那基本上可以认为该程序生成了意识。我们人类自幼进行的学习训练,在我看来可以是确定权重系数表的训练。但人在情绪激动的时候会自行改写这个权重系数表,目前机器没有类似情绪刺激的机制还无法完成此类操作。

eddyzhang说:

Richard说:

最后面那段,有些懵了,没有看明白

littlesujin说:

读入图片后,首先是如何找到车牌部分的照片的?

龙海说:

引用Richard的发言:最后面那段,有些懵了,没有看明白

确实是的,对没有基础的人来说,最后一段有点跳跃。

Worthing说:

讲得浅显易懂,真棒!

thy说:

Neo说:

人工智能的研究者们总是喜欢抬出“神经元”一类的名词来吓人,跟你说他们的算法是受了人脑神经元工作原理的启发。注意了,“启发”是一个非常模棱两可的词,由一个东西启发得来的结果,可以跟这个东西毫不相干。比如我也可以说,Yin语言的设计是受了九yin真经的启发:P世界上这么多AI研究者,有几个真的研究过人脑,解刨过人脑,拿它做过实验,或者读过脑科学的研究成果?最后你发现,几乎没有AI研究者真正做过人脑或者认知科学的研究。著名的认知科学家DouglasHofstadter早就在接受采访时指出,这帮所谓“AI专家”,对人脑和意识(mind)是怎么工作的,其实完全不感兴趣,也从来没有深入研究过,却号称要实现“通用人工智能”(ArtificialGeneralIntelligence,AGI),这就是为什么AI直到今天都只是一个虚无的梦想。

今天是2024年5月22日,OpenAI此前宣称AGI在未来5-10年完成。科技进步超乎你我的想象。

wxdlong说:

这真的是一篇2017年的教程大神的感知领先我十年啊

loveyond说:

引用CD的发言:人工智能不应该是模仿人脑的,就像现在的飞机也不是模仿鸟的飞翔。

那是因为人类想模仿却无法模仿。现代飞机的样子其实是无奈之举,以人类目前拥有的科技水平,是无法制造出像鸟或者昆虫之类的飞行模式所需要的材料

THE END
1.深度学习中神经网络模型训练常见技巧神经网络训练技巧有哪些深度学习中神经网络模型训练常见技巧 本文介绍了深度学习中神经网络模型训练的关键步骤,包括数据预处理、端到端训练框架设计、随机值管理和权重初始化,以及应对过拟合的策略、优化方法选择、预训练模型利用和超参数优化等,强调了长时间训练和集成学习的重要性。https://blog.csdn.net/l35633/article/details/136110019
2.跟我学AI:第一篇神经网络是如何实现的(二)跟我学AI 作者马少平 AI光影社. AI前沿、基础、应用的权威科普 一篇 神经网络是如何实现的(二) 清华大学计算机系 马少平 第二节:神经元与神经网络 自从听艾博士以数字识别为例讲解了神经网络之后,小明一直想着神经网络如何训练的问题。这天小明又来找艾博士,请教艾博士如何训练一个神经网络。 https://aidc.shisu.edu.cn/5e/57/c13626a155223/page.htm
3.一文搞懂神经网络人工智能是这几年非常火的技术,上至九十九下至刚会走都对人工智能或多或少的了解。神经网络是人工智能的核心,也就是说没有神经网络就没有人工智能,那么这篇文章就带大家学习一下神经网络相关的知识。这篇文章没有数学公式、没有代码,旨在帮助读者快速掌握神经网络的核心知识。 https://www.51cto.com/article/606086.html
4.神经网络除了基本单元的构造外,神经元模型中还有很多参数需要进行学习,如权重和偏置等。权重表示了神经元处理不同输入信号时的重要程度,而偏置则表示了神经元产生输出信号的难易程度,因此这些参数的学习和调整对神经网络的训练和预测精度具有极大的影响。 神经网络的结构 编辑本段 神经网络是由多个神经元(也称节点或单元)组成https://vebaike.com/doc-view-943.html
5.深度学习与神经网络有什么区别?深度学习和神经网络是人工智能领域中的两个重要概念,它们在很多方面有着相似之处,但也存在一些区别。本文将从定义、结构、应用等方面来探讨深度学习与神经网络的区别。 定义 深度学习是一种基于人工神经网络的机器学习算法,在大量数据上训练多层神经网络模型,实现对复杂问题的高效处理。而神经网络则是一种模拟生物神经系https://www.cda.cn/bigdata/201326.html
6.科学家构建深度脉冲神经网络学习框架脉冲神经网络(Spiking Neural Network,SNN)被誉为第三代神经网络,使用更低层次的生物神经系统的抽象。它既是神经科学中研究大脑原理的基本工具,又因稀疏计算、事件驱动、超低功耗的特性,备受计算科学的关注。随着深度学习方法的引入,SNN的性能得到大幅提升,脉冲深度学习(Spiking Deep Learning)成为新兴的研究热点。传统SNhttps://www.cas.cn/syky/202310/t20231011_4973919.shtml
7.人工神经网络(ANN)简述本文是这几天学习人工神经网络入门知识的总结。 我们从下面四点认识人工神经网络(ANN: Artificial Neutral Network):神经元结构、神经元的激活函数、神经网络拓扑结构、神经网络选择权值和学习算法。 1. 神经元: 我们先来看一组对比图就能了解是怎样从生物神经元建模为人工神经元。 https://www.jianshu.com/p/f69e16df2623
8.学习笔记:神经网络学习算法腾讯云开发者社区主流的神经网络学习算法(或者说学习方式)可分为三大类:有监督学习(SupervisedLearning)、无监督学习(Unsupervised Learning)和强化学习(Reinforcement Learning),如下图所示。 注:有监督学习、无监督学习和强化学习并不是某一种特定的算法,而是一类算法的统称。 https://cloud.tencent.com/developer/article/1610502