hslxwu 发表于 2023-8-2 14:49:44

神经网络,人工智能这块怎么入门?

有比较强的编程背景,工程能力,这段看了本模式识别的书,被里面的数学搞哭了,全部还给学校老师了。难道一定要把数学捡起来才能入门吗

zpgzs 发表于 2023-8-2 14:49:50

现在无论是计算机专业还是其他的实体行业(机械、制造等等)对于人工智能的需求都还是蛮大的。所以现在也有很多人想入门人工智能,或者转行人工智能。其实人工智能是一个很大的方向,现在提到的人工智能基本上都默认以深度学习为主导的方法,但其实人工智能和深度学习的关系是:深度学习是机器学习的一个子集,机器学习是人工智能的一个子集。那么现在深度学习这么火,答主就简单的出深度学习的角度来回答一下这个问题。
其实对于深度学习这个日新月异,每年爆发式更新模型的方向来说,学习路线的最尽头肯定是阅读你这个方向最新的论文,无论是科研人员还是已经走上工作岗位打算转行的打工人。阅读论文的来源一般是各种顶会(CVPR、ECCV、ICCV)、顶刊(TPAMI)。如果你嫌麻烦可以直接去谷歌学术或者 arXiv 上搜索你关注的内容,在搜索的时候最好把时间设定在最近几年。
说完学习路线的尽头,我们来看看入门的一些要求。对于入门深学习而言,你是必须掌握 Python 这门语言的,主要的原因是很多模型开源的代码都是基于 Python 实现的,而且目前针对深度学习的两个主流框架 pytorch 和 TensorFlow 都是支持 Python 开发的,也就是说深度学习的生态很大一部分是依赖 Python 的。所以说学习和掌握 Python 是入门深度学习必须的步骤,如果你不会也不用担心,入门 Python 还是非常简单的,目前知乎推出了一个基于 Python 的数据开发课程,如果你感兴趣的话可以购买学习一下,现在也不是很贵才一毛钱,以后可能就不好说了,所以直接买就完事了,也算是薅羊毛了。
好当你掌握了 Python,那么下一步就是去学习一些基础的数学知识了,因为如果一点数学知识都不知道的话后面论文中的公式你可能都看不懂,更不用提推导复现模型了。但你也没必要害怕,主要的就是基本的线性代数知识,也就是本科大一下学期学的,以及一些高等数学中的微积分知识。因为深度学习说的通俗一点就是大量的线代中矩阵运算和微积分中偏微分用于梯度下降。


当你掌握 Python 编程和基本的线代知识以及微积分以后,你现在就可以去看看最基本的深度学习网络模型了。虽然说现在深度学习日新月异,但是目前的很多新模型都是基于这些基础模型上进一步创新和跨领域应用的。这些基本的模型不仅能带你理解深度学习,也能帮你打下坚实的基础,这对于你后面去理解新模型和创新是非常重要的
下面就从计算机视觉(二维图片处理、三维点云数据处理)、自然语言处理列举几个最基本的模型。
深度学习网络基础知识:正向传播、梯度下降、反向传播、常见的几个 LOSS 函数(损失函数)
开山鼻祖:FCN 网络(全连接神经网络)


计算机视觉(2D 图片任务):
1.CNN(这个就不过多介绍了,已经是如雷贯耳了)
2.FCN(膨胀卷积,是分割任务中祖师爷般的存在)
3.RCNN 系列(目标检测任务霸主,现在很多下游任务还是会把 faster rcnn 当做骨干网络)
计算机视觉(3D 视觉点云或者体素任务):
1.PointNet/PointNet++(在三维视觉中基于点数据流派的开山之作)
2.VoteNet(何凯明在三维目标检测的力作)
自然语言处理方向:
RNN(这个模型年纪虽然可能比你都大(1982 年)但这并不影响他在 NLP 领域的影响力)LSTM(1997 年,是对 RNN 的一个改进版本)transform(这个不多说,现在真的是 transform 及其子孙模型大行其道的时代,光在自然语言领域卷还不够,现在都跑到计算机视觉领域来卷了)
当你读完上面论文,你就可以去专门的看你自己方向的论文了,希望这篇回答对你有所帮助。
原文作者:数学建模钉子户
使用 App 查看完整内容目前,该付费内容的完整版仅支持在 App 中查看
<a href="http://oia.zhihu.com/answer/2819362293/" class="internal" style="color: #0084FF;text-decoration:none;border-bottom:none;">🔗App 内查看

madein163 发表于 2023-8-2 14:50:30

要了解机器学习、了解神经网络,一种非常有趣的方式,就是找个小游戏,自己实现一下。
这里介绍三个游戏 (后两个游戏有智能体的开源代码) 。第一个是赛车:



△ 训练前

游戏里的每一位AI玩家 (智能体) ,都是一个小小的神经网络。
一开始,它们什么都不懂,刚开局就GG。但有了进化算法 (Evolution) ,AI可以在一代一代更迭中,掌握强大的游戏技能。



△ 成效显著

比如,在这个赛车游戏里,萌新车手跑出去不久便撞上了马路牙子。不过,用不了几代进化,就有AI车手可以毫发无损地跑完一周。
进化的赛车手

AI赛车手如何快速炼成?
首先,要有一个庞大的车队。
赛车AI的开发者,是一位叫做Johan Eliasson的程序猿。他的训练计划里,有650辆车同时训练。
第二,AI开车需要一些空间信息。


这5条黄线代表5个距离,指示离马路牙子还有多远;
除此之外,AI还需要知道自己当前的速率,以及方向。
这样算来,神经网络一共会接受7个输入。
第三,就是让神经网络不断进化。
输入七个值,处理一下,输出两个值:
一个代表方向盘,按照数值大小,分为左转、右转、方向不变三种操作;
一个代表油门/刹车,按照数值大小,分成加速、减速、速率不变三种操作。最开始,谁不知道游戏规则,输出值很随机。



△ 第一代,死得快

650辆车冲出去没多久,路边就出现了大批车辆的尸体。
但重要的是,依然有硕果仅存的汽车,不止通过了第一次的右转考验,也机智地发现下一处弯道应该猛烈左转:


虽然,它并没有成功掉头,但依然是下一代的希望:进化算法就是要在每一代里,选出最优秀的一只或者几只智能体,繁育出色的后代。

(这里,程序猿没有找到一种很好的方法,让系统自动选择出优质的个体,于是就手动马克了,反正也没有训练很多代。)
所以,第二代的650辆车,全是这一只智能体的子嗣,各自有些轻微的变异:神经网络的权重发生小小的变化。
变异是为了保持车队的多样性,期待从中生产出更加优秀的个体,繁育下一代。



△ 第二代,马克三只

由于继承了优良传统,第二代汽车大部分都完成了第一次右转,还有一小部分掉头成功。
这一次,把冲到最前面的3辆车马克一下,它们差一点就能达成两次连续掉头的S形操作。
既然,第三代的父母有3位,那么繁育过程中除了变异之外,还涉及杂交:就是把不同的神经网络揉到一起:


第三代的表现更加精进,有的智能体完成了多次连续转弯,胜利在望。
第四代,便有智能体跑完一周,值得纪念:


程序猿说:这效果比想象的好多了,之前我还有点怀疑,现在只能说机器学习好厉害。
第四代车队中的佼佼者,已经不太撞到路肩,只是速度还很慢,就像一大波僵尸。
车队的主人表示,后面的主要任务就是训练速度。毕竟,这是赛车。
到了第十代,速度已经有了明显的提升,不过依然不算快:



△ 第十代

不知训练了多少代,现在把每一代的优质选手放在一起跑。你看,好快:



△ 这才是赛车

成果斐然之余,程序猿还请大家注意一个重点:
AI不知道自己在开车,不知道有跑道。它只接收七个输入的数值,不了解它们代表什么意思,也不知道自己输出的每一个决策,产生了怎样的效果。
就算这样,它还是学会了怎样在游戏世界里更好地生存。
不想开车?还有其他游戏

虽然,赛车游戏的视频,没有讲到程序猿用了怎样简单的神经网络。不过,可以通过另一个简单的游戏,来感受一下:
Flappy Bird


http://pica.zhimg.com/v2-74b3917c010d5e2ccc9b16241ead149f_r.jpg?source=1940ef5c
这个HTML 5实现, 也是进化算法和神经网络共同的结晶。而且开源了。
它的作者ssusnic说,神经网络部分,用的是突触神经网络 (Synaptic Neural Network) 库。
没有650辆车那么多,种群里只有10只小鸟。每一只,都是一个三层的神经网络:
输入层:两个神经元
隐藏层:六个神经元
输出层:一个神经元

输入两个值,代表小鸟当前距离下一个障碍物的相对位置,分成水平距离 (x) 和竖直距离 (y) 。
经过隐藏层的处理,输出一个0-1之间的数值,决定下一步要不要扇翅膀:
如果大于0.5,就扇翅膀,反之就不操作。



△ 第一代

第一代的小鸟,都是随机神经网络 (Random Neural Networks) ,集体见光死。
全部阵亡之后,要选出四只最优质的小鸟去繁殖。问题来了,肉眼看去相差无几,要选哪几只?
并不需要手动选择,而是用一个适应度函数 (Fitness Function) :
适应度 = 小鸟存活的最远距离 - 小鸟到下一个障碍物的距离


△ 这里,讨论水平距离

适应度分数排名前四的小鸟,按下面的规则繁殖10个后代:
· 前两名,杂交出一个后代
· 4只中随机选两只,杂交出三个后代
· 4只中随机选两只,分别直接复制,生成两个 (和上代一样的) 后代
· 给每个后代加入一些变异就这样,来到第11代,已经有小鸟飞出很远且毫发无伤:


第23代,完全碾压,可以换个游戏了:


吃豆豆

当然,不是所有游戏都像小鸟扇翅膀这样简单。
吃豆人 (Pacman) 就是个更复杂的栗子。比如,前面要躲避的障碍物都是静止的,Pacman的敌人是移动的,穷追不舍。


重点是,为了抓到Pacman,四个敌人还有各自不同的运动规则:
红色鬼,直接瞄准Pacman的位置进发;
粉色鬼,瞄准Pacman前方的第四格;
蓝色鬼,利用Pacman和红色鬼的位置来搞伏击;
橙色鬼,原本和红色鬼一样,但当它和Pacman的距离近到8格以内,就会朝一个角落退缩,那是它出发的地方。

并且,Pacman吃到无敌大豆豆的时候,敌人还会从追击模式转成逃跑模式。
复杂的游戏,自然也需要更加精密的算法,来帮智能体进化。
名叫Code Bullet的程序猿,就用了一种叫做NEAT的神经进化算法。
这种方法很特别,神经网络在迭代过程中,不止权重会变化,网络结构也会变复杂。


而网络结构越复杂,就可以支持越复杂的行为,让Pacman在险恶的世界里存活。
虽有强大的算法,训练还是要由浅入深。
先不加无敌大豆豆,也不加敌人,给AI一个简单的世界。
这样它就能吃光所有豆豆?不存在的。


第一代最优秀的智能体,也只会右转不会左转,还把自己困在一处,永远走不出去。
第二代,有的选手学会了左转,但依然会困住。
……
第十八代,眼看快要吃光豆豆,AI还是困死了自己。


在平静中训练20代之后,趁AI不注意把敌人放出来,又要从手忙脚乱开始重新适应:


不过好在,智能体学以很快便学会了躲避敌人:


又过了40代,是时候加入无敌大豆豆了。
这一层防护令AI如有神助,就像在经历了40代卧薪尝胆之后,开启了复仇模式,疯狂追击。
终于,有智能体在第七十三代通关成功:


视频的画外音里,程序猿的声音都激昂了起来,这场战役的胜利他期待已久。
除了发表获奖感言,谢过各路亲友的支持,他也没忘在GitHub上分享代码 (传送门见文底) 。
动手吧,少年

同学,你也去搭个神经网络打游戏吧,呆萌的游戏也能打出热血的气质。
以后,神经网络可能就是你女朋友了。
(友情提示:虽然赛车游戏没有开源代码,但OpenAI Gym里面有赛车场,也可以去试试。)
赛车游戏视频传送门:
https://www.youtube.com/watch?v=wL7tSgUpy8w
OpenAI Gym赛车场:
https://gym.openai.com/envs/CarRacing-v0/
Flappy Bird代码传送门:
https://github.com/ssusnic/Machine-Learning-Flappy-Bird
Pacman代码传送门:
https://github.com/Code-Bullet/PacNeat (NEAT算法)
https://github.com/Code-Bullet/PacmanGame (搭建游戏环境)

zjcba 发表于 2023-8-2 14:51:11

作者:许铁-巡洋舰科技
链接:
知乎专栏来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文为巡洋舰神经网络分享会总结,以人工神经网络为圆心,介绍神经网络在跨学科研究中的神奇应用,以飨读者。

感谢本次邀请嘉宾 - 杨东平博士的贡献。杨东平博士在复杂系统,平衡态神经网络领域均有建树, 目前在悉尼大学从事博士后工作。

神经网络这个东西,随着最近阿法狗和深度学习的热络, 真是火遍全球, 人们已经快把它看成一种新兴生物 , 却忘记了它的真实出处, 我在巡洋舰的此次讲座, 从物理学,复杂科学 ,计算神经科学与人工智能的角度综合分析了神经网络这个玩意。

从物理角度看神经网络: 自组织涌现与复杂科学
要说物理学家看神经网络, 就不能离开统计物理。 物理学家把神经网络看成无数神经细胞相互作用组成的一个整体。就如同理想气体是无数分子的组合或金属晶体是原子的组合类似。 虽然单个神经细胞只有一个简单的作用, 就是把接收到的信号(stimulus)转化为一定的输出(spike) 。 但是这样一个简单的东西通过大量加和的网络效应却可以产生智能这种十分复杂的现象,这正是物理里说的涌现性。所谓简单的东西堆在一起足够多, 突然之间产生了一个更加复杂和高级的现象。 这种由于尺度跨越造成的飞跃性变化。 物理学认为是自然界各种复杂的东西形成秘密之所在。
然而和神经网络最接近的物理恐怕是易辛模型。易辛模型特别简单易懂,说的是在一个网络里,每个单元都只受到自己邻居的影响,大家在一个集体里, 每个个体都有到与周围人做类似行为的趋势(趋同力), 同时也受到各种随机性的影响来破坏这种趋同效应(温度, 热扰动), 最终整个网络的状态是这两种力量平衡的结果。 如果温度比较低的话, 最终网络将会呈现一种整体一致的状态,因为这个时候系统总体能量最低。而温度高的时候,系统更加趋于无序。 这种从有序到无序,无序到有序的变化在某个温度上突然发生。 易辛模型解释了大规模宏观秩序是如何从自由散漫的群体中涌现的, 还真的被用在了生物神经网路的研究上, 大名鼎鼎的Hopefield网络的理论就是用这种机制解释大量神经元在一起如何通过微弱的相互作用来实现集体编码和储存一个信息的。在此处物理系统喜欢呆在能量极小点的原理忽然变成了神经网络进行决策的物理基础。 那个使得网络总体能量最小的状态,对应你做的决策。


易辛模型: 每个磁针都有和邻居保持一致方向的趋势, 这种简单的作用力导致大规模的秩序的产生, 比如一个社区群体的意志是如何趋于一致的。
从相变的角度看神经网络, 我们可以理解很多我们常常百思不得其解的问题, 如我们是如何睡觉的。 从醒着到睡觉, 人脑会发生一个剧烈的变化, 这个变化其实跟物理里面水结冰的现象很像。 是从自由的状态, 到极为有序的状态。 如果你观察从醒着到睡着的脑电波变化,你会发现波形凑某一点上一下子变掉了,这过程与相变是多么相似。 睡眠,冥想,爱上一个人, 或许都可以看做这种大量神经单元 在某种条件下从一个整体状态跳到另一个整体状态的相变。


多种多样的脑电波反应大脑的宏观状态
物理学角度对神经网络的贡献当然不止于相变和涌现性 , 更主要的贡献是非线性动力学。非线性动力学的方程式甚至精准的预测了神经细胞放电这个极为复杂的理化过程, 这就是大名鼎鼎的Hodykin-Hulex 模型, 在这个模型中, 巨多繁琐的实验现象被一组精心编排的微分方程同时消灭掉, 堪称物理解释生物的神迹。你如果在电脑上跑一些这个方程,得到的现象近乎和细胞真正放电时候不可区分。


Hodykin Huley model预测的神经元放电动力学模型: 左图是复杂的方程,右图是神经元放电电位随时间的变化,我们可以看到这组复杂的方程把神经元的离子通道变化进行了精确的定量描述。
对于神经网络的动力学解释主要基于物理的混沌理论。 因为神经网络作为一个高维系统, 它的行为正好符合混沌的框架, 你去扰动任何一个神经元, 则产生的后果不可预料, 符合南美洲的蝴蝶扇扇翅膀引来北美的飓风这个比喻。 我们都知道生物的神经网络可以极为精准而稳定的决定动物的各种行为, 这样一个混沌充满随机性,看似不可控的网络, 是如何给出那么精准确定的行为的? 这就与物理里降维的思想暗自相通。高维度的网络系统在某个任务的时候, 可以被化解到更低的维度里用动力学完全解释,这个过程暗自通向人工智能的核心。

从生物角度看神经网络
生物学眼里的神经网络估计是最复杂的,生物学家注重细节和功能, 我们要理解网络,就要去解剖, 做电生理实验, 做各种神经成像。 首先我们关注神经细胞之间的具体链接,然后我们关注这些连接实现的载体- 突触的性质。研究细胞之间通讯的关键,神经递质。 神经递质又是由一定的DNA编码的,最后我们又回到了遗传学。 跑完一圈我们得到感知, 到决策,从而心理现象的生物解释。懂得吃哪一种药可以让你春心大作。
再次强调生物学家是特别重视细节的, 因为生物神经网络的研究思维也是一个一个搞清楚网络的连接,搞清哪个细胞是输入, 哪个是输出。 来自这方面的观点认为, 如果我们能绘制一个神经元之间联系的精密地图, 我们就搞清楚了大脑是怎么回事。 这种观点又叫connectionsim。可惜的是这个工作太艰巨,目前离这个目标还非常遥远。
生物对神经网络解释最有意思的现象还是学习,神经细胞之间的连接-神经突触是随时间不停变化,这种微妙的变化由神经活动所致,一个细胞经常和另一个细胞一起放电,他们的联系就加强,因而他们所代表的信息就联系起来,这就是学习的基础(Hebbian learning)。
生物学家的工作是整个学科的脊梁,尤其是有关神经活动成像的工具。 没有光遗传这些生物技术的开发, 人是无论如何可以直接看清大脑网络里到底在干什么的。 还有钙离子成像, 神经白质成像等, 没有神经生物学家日复一日的工作, 我们对神经网络的思考只能是一种YY, 而人工智能也难以有更长远的发展。


光遗传学, 即用光对神经细胞的离子通道进行有效控制而操纵神经元的手段,是研究神经网络的神器之一

从信息角度看神经网络
从信息学的角度看, 神经网络这个东西就是整合各种信息的工具。 生物进化出神经网络, 是因为他们所面临的信息错综复杂, 而如何把不同的信息整合在一起, 判断谁是猎物谁是天地什么时候该走什么时候该留, 事关生死。 那么整合信息, 就是第一要务。
信息学喜欢从贝叶斯分析的角度看神经网络。所谓贝叶斯分析, 就是把新增加的证据和之前形成的信念不停进行综合,来做当下的决断。要做这种综合, 显然一要能够不停收集新的信息,二要储存和调用之前信息,三要根据前两者对未来做出预测并行动, 最后要能够根据之前信息改变现有网络的状态 , 这三种分别对应感知,记忆,行为和学习。
感知信息要做到尽量精准的反应与决策相关的外界信号的特征,如在人海中抓取出一个美女。 处理信息在做的把之前的经验和现在的信息结合在一起预测未来,如你知道根据以往的经验美女难追, 但是这一次美女特别热情所以你预测她和之前人不同。 最后根据这个预测进行有效的行动,并根据反馈进行学习,比如还是失败了或被骗了钱, 那就加固你的信仰-美女难追,如果成功了,就修改之前的信仰-美女也是可以追的。 这样一个精美的框架不仅给生物神经网络的运转提供了天衣无缝的解释,而且也与机器学习里的统计学习理论不谋而合 。 用这个框架我们可以很好的推测大脑是如何把所谓视觉听觉嗅觉信号综合在一起的,我们为什么要思考要理解世界,我们为什么既关注过去也关注未来,一切都是为了形成一个更准确的对世界的建模, 来预测, 预测,预测。


贝叶斯公式- 把新的证据和旧经验结合的概率方法

作为AI基础的神经网络
AI这个东西, 的确是靠着神经网络的功力得以发展壮大, 不过它最初倒不是模拟神经网络, 而是想要直接做出一台会思维的机器, 可惜人类的思维毕竟有瓶颈。 我们发现还是要借助仿生,从生物那里吸取营养, 于是有了人工神经网络。因此, 无论人工智能无论如何吹它和其他门类神经网络的不同, 都不可摆脱其仿生基础。
人工神经网络的第一个里程碑是感知机perceptron, 这个名字其实有点误导, 因为它根本上是做决策的。 一个感知机其实是对神经元最基本概念的模拟 ,都未必有多少网络概念,他就是一个自动做决策的机器。
比如说你要决定今天出不出去看电影, 你要考虑3个因素, 一个是女朋友在不在, 一个是电影好不好看, 另一个是今天有没有工作, 这三个因素每个人的权重都不同,有的人看重女朋友, 有的人看重工作,所以权重就不等, 最后每个人根据自己的权重做出0或1,去或不去, to be or not to be的决策。那么你怎么做呢? 你把三个要素按照它们需要的权重加和在一起, 在把这个分数送到一个叫sigmoid的门面前得到去或不去的决定, 工作原理如上图。
比单层感知机更复杂的多层感知机-或者我们常说的深度网络, 是进行数据处理和模式识别的利器。 深度神经网络之所以能够处理这些数据类型,主要是因为这些数据本身具有的复杂结构很适合被NN识别, 而人类不需要预先设计识别这些结构的函数而是任由网络学习, D-CNN 深度卷积网络能够同时看到一个图像从细节到抽象的结构,所以能够抓住一些我们人类都说不出的细节。


DCNN 深度卷积网络,信号在多级网络里一级级传递, 从而使得从微观到宏观的特征都得到分辨 。 每一层神经元之间没有相互连接。


而RNN- 反馈式神经网络(每一层神经元之间有相互连接)则适合处理sequnce序列类的数据, 发现序列内部的时间结构。
RNN 之所以具有这个能力,就是因为网络内部通过自反馈, 具有之前各个时间点的输入信息, 因此它可以从无限久远的历史里推测系统的未来,RNN与之前的卷积网络相比最大的特点是它包含了动力学特性,如果说卷积网络是任意函数逼近器,那么RNN就是任意程序逼近器。 犹如包含某种工作记忆。用一个比喻来说, 就是RNN犹如一个宽阔的池塘宁静的水面, 当你投入一个石子, 激起的涟漪会在水池里不停反射传播, 这是对石头进入那一时刻信息的保存, 如果之后在落入一个石头, 那么它再度激起的涟漪会和之前的水波叠加作用, 形成更复杂的相互作用和纹样。

http://pica.zhimg.com/50/v2-883d1a36d430e9d7f5e41ed3916dcfe8_720w.jpg?source=1940ef5c
RNN示意图, 同层神经元之间有相互连接,从而使得历史信息在网络里向回声一般交替传递
RNN 具有相互连接的反馈式神经网络也是最接近生物组织神经网络的人工神经网络, 具有更多的未来潜力,只是它的训练比feed forward network更复杂。
人工神经网络的训练就如同生物神经网络的学习, 都是一个不停试错并减少错误的原理, 不过人工神经网络的方法更加简单化, 比如gradient descent,就是说在参数空间里寻找使得错误减少最快的方法改进。
人工神经网络对于生物神经网络的奇妙之处在于, 它反过来启迪了生物神经网络是在干什么的, 就好像费曼的那句话“ 你要想真正理解一个东西, 就造出一台”。


不同领域的神经网络的交叉
神经网络这个东西是最能体现跨学科交叉的概念之一。既然自然界选择这样一种结构作为生物决策和智能的必杀器, 必有其道理, 人类只模拟了十之一二,配以强大的计算机集群,就能够产生阿法狗这样的利器, 其未来潜能未曾可知。
其实各种角度的神经网络,是互相交叉, 你中有我, 我中有你的。比如物理的神经网络, 和信息论的神经网络有非常紧密的关系。 而它们都与生物神经网络和AI有千丝万缕的联系。AI里最近引入的注意力,记忆等算法, 也都能找到其生物学对应。区别只是AI并不关注那些生物的限制, 而可以通过任意虐计算机在一些局部领域超越生物。
各个领域的神经网络都以“学习理论”为核心, 物理里叫做寻找能量最低的解, 生物里叫神经可塑性, AI里叫深度学习,其实都是把网络理解成一个根据外界输入不停调整的变化过程,不同学科对这过程的最终目的提出不同的解读。
各个学科眼里的神经网络你中有我,我中有你的关系在AI里体现特别深刻。 比如, 目前的人工神经网络不仅加入了记忆, 还加入了注意力, 甚至加入了好奇心, 一个不懂AI的人很可能误解为这是心理学研究, 而事实上, 心理学研究的人也可以从这些AI里得到启迪。
回到那个深刻的问题, 神经网络为什么有作用? 单独站在一个学科的角度绝不可能明白。 人工智能的人研究了半个世纪, 最终回到类似生物网络的结构, 忍受因此带来的复杂度, 这背后必有其深刻的原因。 这个深刻的原因只能通过物理和复杂科学揭示。
为了一个简单的任务,生物进化出那个复杂的网络,为什么? 这就与生物要适应多种而非一种复杂的环境有关, 或者说适应性, 或者说鲁棒性, 一个没有适应性的生物是没有前途的。 同理,一个没有类似生物的适应性和鲁棒性的AI也走不了多远。 神经网络的功用正是由于它引入了生物复杂系统的基本原理, 虽然只是冰山一角。
也正如前文不断提到的, 从各个角度对神经网络理解的突破, 会很好的促进其他领域的理解。现在人们对AI的热情容易让人忽略了其他几个角度, 而单纯把神经网络变成一场集体调参数的盛宴, 则对整个领域来说是某种损失, 减少了许多发展的可能性。
本文转载自微信公众号混沌巡洋舰(chaoscruiser)。
(作者许铁 微信号 562763765)

xchenxjiex 发表于 2023-8-2 14:52:09

作者:硅谷周边
链接:
如何高效的学习TensorFlow代码? - 硅谷周边的回答来源:知乎
著作权归作者所有,转载请联系作者获得授权。
Google发布了Tensorflow游乐场。Tensorflow是Google今年推出的机器学习开源平台。而有了Tensorflow游乐场,我们在浏览器中就可以训练自己的神经网络,还有酷酷的图像让我们更直观地了解神经网络的工作原理。今天,就让硅谷周边带你一起去Tensorflow游乐场快乐地玩耍吧!


昨天,Google深度学习部门Google Brain的掌门人,也是Google里受万众景仰的神级别工程师Jeff Dean,在Google Plus上发布了Tensorflow游乐场的消息:





于是小伙伴们都十分激动地去Tensorflow的网站上玩神经网络了!游乐场的地址是:http://playground.tensorflow.org。让我们快点一起去看看游乐场里有哪些好玩的东东吧。

一打开网站,就看见上面的标语:




“在你的浏览器中就可以玩神经网络!不用担心,怎么玩也玩不坏哦!”

这简直太令人振奋了!面对这么多可以随便点的按钮,咱们从哪儿开始呢?



首先让我们来看看数据。在这个游乐场中,我们有4种不同形态的数据可以玩:




每组数据,都是不同形态分布的一群点。每一个点,都与生俱来了2个特征:x1和x2,表示点的位置。而我们数据中的点有2类:橙色和蓝色。我们的神经网络的目标,就是通过训练,知道哪些位置的点是橙色、哪些位置的点是蓝色。

如果橙色是橙子,蓝色是蓝莓。假设我们有2000个散落在各处的橙子和蓝莓。前1000个,我们知道坐标(1,1)的是蓝莓,(2,2)的是橙子,(0.5,0.5)的是蓝莓等等。我们要用这些信息来训练我们的神经网络,让它能够准确地预测出后1000个哪些是橙子、哪些是蓝莓。

看上面的4组数据,我们会发现,前3中都能相对简单地区分开,而最后一组螺旋数据会是最难的。

Tensorflow游乐场中的数据十分灵活。我们可以调整noise(干扰)的大小,还可以改变训练数据和测试数据的比例多少。下图是不同noise的数据分布。




当我们把每一个数据点的信息喂给机器学习系统时,我们需要做feature extraction,也就是特征提取。如果我们真的是在区分蓝莓和橙子的话,大小、颜色等等都会是我们的特征。而这里,每一个点都有x1和x2两个特征。除此之外,由这两个特征还可以衍生出许多其他特征:



抽象来说,我们的机器学习classifier(分类器)其实是在试图画一条或多条线。如果我们能够100%正确地区分蓝色和橙色的点,蓝色的点会在线的一边,橙色的会在另一边。

上面这些图其实非常的直观。第一张图中,如果x1作为我们的唯一特征,我们其实就是在画一条和x1轴垂直的线。当我们改变参数时,其实就是在将这条线左右移动。其他的特征也是如此。

很容易可以看出,我们需要智能地结合这其中一种或多种的特征,才能够成功地将蓝色点和橙色点分类。这样的feature extraction,其实往往是机器学习应用中最难的部分。好在我们有神经网络,它能够帮我们完成大部分的任务。

如果我们选定x1和x2作为特征,我们神经网络的每一层的每个神经元,都会将它们进行组合,来算出结果:



而下一层神经网络的神经元,会把这一层的输出再进行组合。组合时,根据上一次预测的准确性,我们会通过back propogation给每个组合不同的weights(比重)。这里的线越粗,就表示比重越大:

http://pica.zhimg.com/v2-b347123fa0ca35a31dac603a6591a55f_r.jpg?source=1940ef5c

下面就让我们用最难的螺旋形数据,来试试这个神经网络的表现吧!

在神经网络出现前,我们往往会竭尽所能地想出尽可能好的特征,把它们全都喂给系统。而系统会是个十分浅的系统,往往只有一层。用这样的方法来完成分类。

让我们先来实验传统的方法。在这里,我们将所有能够想到的7个特征都输入系统,并选择只有1层的神经网络:



最后的结果是这样的,可以看出我们的单层神经系统几乎完美地分离出了橙色点和蓝色点:



接下来,让我们来体验神经网络真正的魔法。神经网络最大的魔力,就在于我们根本不需要想出各种各样的特征,用来输入给机器学习的系统。我们只需要输入最基本的特征x1, x2, 只要给予足够多层的神经网络和神经元,神经网络会自己组合出最有用的特征。

在这次试验中,我们只输入x1, x2,而选择1个6层的,每层有8个神经元的神经网络:



最后的结果是这样的。我们发现,通过增加神经元和神经网络的层数,即使没有输入许多特征,我们也能够成功地分类:



神经网络的伟大之处就在于此。当我们在解决分类橙色点和蓝色点这样的简单问题时,想出额外的特征似乎并不是难事。但是,当我们要处理的问题越来越复杂,想出有用的特征就变成了最最困难的事。比如说,当我们需要识别出哪张图片是猫,哪张图片是狗时,哪些特征是真正有效的呢?

而当我们有了神经网络,我们的系统自己就能学习到哪些特征是有效的、哪些是无效的,这就大大提高了我们解决复杂机器学习问题的能力,简直是太酷啦!

看了以上的文章,你是不是对神经网络有了更直观的认识呢?好奇的小伙伴们,欢迎去http://playground.tensorflow.org/自己试试看,真的非常好玩!
http://weixin.qq.com/r/2Dno8IjEWNUnrcyT92zK (二维码自动识别)

nsok 发表于 2023-8-2 14:52:49

视频教学

YJango:超智能体S01:高考与机器学习YJango:超智能体M01:7分钟入门线性代数+微积分YJango:超智能体L01:9分钟的深度学习一、基本变换:层

神经网络是由一层一层构建的,那么每层究竟在做什么?

[*]数学式子:https://www.zhihu.com/equation?tex=%5Cvec%7By%7D%3D+a%28W%5Ccdot%5Cvec%7Bx%7D+%2B+%7Bb%7D%29,其中是输入向量,是输出向量,https://www.zhihu.com/equation?tex=%5Cvec%7Bb%7D是偏移向量,https://www.zhihu.com/equation?tex=W是权重矩阵,是激活函数。每一层仅仅是把输入https://www.zhihu.com/equation?tex=%5Cvec+x经过如此简单的操作得到https://www.zhihu.com/equation?tex=%5Cvec+y。
[*]数学理解:通过如下5种对输入空间(输入向量的集合)的操作,完成 输入空间 —> 输出空间 的变换 (矩阵的行空间到列空间)。
注:用“空间”二字的原因是被分类的并不是单个事物,而是一类事物。空间是指这类事物所有个体的集合。

[*]1. 升维/降维
[*]2. 放大/缩小
[*]3. 旋转
[*]4. 平移
[*]5. “弯曲”
这5种操作中,1,2,3的操作由完成,4的操作是由https://www.zhihu.com/equation?tex=%2B%5Cvec%7Bb%7D完成,5的操作则是由来实现。 (此处有动态图5种空间操作,帮助理解)




每层神经网络的数学理解:用线性变换跟随着非线性变化,将输入空间投向另一个空间。

[*]物理理解:对的理解就是通过组合形成新物质。https://www.zhihu.com/equation?tex=+a%28%29又符合了我们所处的世界都是非线性的特点。

[*]情景:是二维向量,维度是碳原子和氧原子的数量https://www.zhihu.com/equation?tex=+%5BC%3BO%5D,数值且定为https://www.zhihu.com/equation?tex=%5B1%3B1%5D,若确定是三维向量,就会形成如下网络的形状 (神经网络的每个节点表示一个维度)。通过改变权重的值,可以获得若干个不同物质。右侧的节点数决定了想要获得多少种不同的新物质。(矩阵的行数)






[*]1.如果权重W的数值如(1),那么网络的输出y就会是三个新物质,[二氧化碳,臭氧,一氧化碳]。
https://www.zhihu.com/equation?tex=%5Cleft%5B+%5Cbegin%7Bmatrix%7D+CO_%7B2%7D%5C%5C+O_%7B3%7D%5C%5C+CO+%5Cend%7Bmatrix%7D+%5Cright%5D%3D+%5Cleft%5B+%5Cbegin%7Bmatrix%7D+1+%26+2+%5C%5C+0+%26+3%5C%5C+1+%26+1+%5Cend%7Bmatrix%7D+%5Cright%5D+%5Ccdot+%5Cleft%5B+%5Cbegin%7Bmatrix%7D+C+%5C%5C+O+%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D (1)
[*]2.也可以减少右侧的一个节点,并改变权重W至(2),那么输出 就会是两个新物质,https://www.zhihu.com/equation?tex=%5B+O_%7B0.3%7D%3BCO_%7B1.5%7D%5D。
https://www.zhihu.com/equation?tex=%5Cleft%5B+%5Cbegin%7Bmatrix%7D+O_%7B0.3%7D%5C%5C+CO_%7B1.5%7D%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D%3D+%5Cleft%5B+%5Cbegin%7Bmatrix%7D+0%26+0.3+%5C%5C+1+%26+1.5%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D+%5Ccdot+%5Cleft%5B+%5Cbegin%7Bmatrix%7D+C+%5C%5C+O+%5C%5C+%5Cend%7Bmatrix%7D+%5Cright%5D(2)
3.如果希望通过层网络能够从空间转变到空间的话,那么网络的学习过程就是将W的数值变成尽可能接近(1)的过程 。如果再加一层,就是通过组合这三种基础物质,形成若干更高层的物质。
4.重要的是这种组合思想,组合成的东西在神经网络中并不需要有物理意义。


每层神经网络的物理理解:通过现有的不同物质的组合形成新物质。二、理解视角:

现在我们知道了每一层的行为,但这种行为又是如何完成识别任务的呢?
数学视角:“线性可分”

[*]一维情景:以分类为例,当要分类正数、负数、零,三类的时候,一维空间的直线可以找到两个超平面(比当前空间低一维的子空间。当前空间是直线的话,超平面就是点)分割这三类。但面对像分类奇数和偶数无法找到可以区分它们的点的时候,我们借助 x % 2(取余)的转变,把x变换到另一个空间下来比较,从而分割。




[*]二维情景:平面的四个象限也是线性可分。但下图的红蓝两条线就无法找到一超平面去分割。


神经网络的解决方法依旧是转换到另外一个空间下,用的是所说的5种空间变换操作。 比如下图就是经过放大、平移、旋转、扭曲原二维空间后,在三维空间下就可以成功找到一个超平面分割红蓝两线 (同SVM的思路一样)。


上面是一层神经网络可以做到的,如果把上面是一层神经网络可以做到的,如果把 当做新的输入再次用这5种操作进行第二遍空间变换的话,网络也就变为了二层。最终输出是https://www.zhihu.com/equation?tex=%5Cvec%7By%7D%3D+a_%7B2%7D%28W_%7B2%7D%5Ccdot%28a_%7B1%7D%28W_%7B1%7D%5Ccdot%5Cvec%7Bx%7D+%2B+%7Bb%7D_%7B1%7D%29%29+%2B+%7Bb%7D_%7B2%7D%29。
设想网络拥有很多层时,对原始输入空间的“扭曲力”会大幅增加,如下图,最终我们可以轻松找到一个超平面分割空间。



当然也有如下图失败的时候,关键在于“如何扭曲空间”。所谓监督学习就是给予神经网络网络大量的训练例子,让网络从训练例子中学会如何变换空间。每一层的权重W就当然也有如下图失败的时候,关键在于“如何扭曲空间”。所谓监督学习就是给予神经网络网络大量的训练例子,让网络从训练例子中学会如何变换空间。每一层的权重W就控制着如何变换空间,我们最终需要的也就是训练好的神经网络的所有层的权重矩阵。。这里有非常棒的可视化空间变换demo,一定要打开尝试并感受这种扭曲过程。更多内容请看Neural Networks, Manifolds, and Topology。
上面的内容有三张动态图,对于理解这种空间变化非常有帮助。由于知乎不支持动态图,可以在gitbook深层学习为何要“deep”上感受那三张图。一定一定要感受。
线性可分视角:神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。 增加节点数:增加维度,即增加线性转换能力。 增加层数:增加激活函数的次数,即增加非线性转换次数。物理视角:“物质组成”

[*]类比:回想上文由碳氧原子通过不同组合形成若干分子的例子。从分子层面继续迭代这种组合思想,可以形成DNA,细胞,组织,器官,最终可以形成一个完整的人。继续迭代还会有家庭,公司,国家等。这种现象在身边随处可见。并且原子的内部结构与太阳系又惊人的相似。不同层级之间都是以类似的几种规则再不断形成新物质。你也可能听过分形学这三个字。可通过观看从1米到150亿光年来感受自然界这种层级现象的普遍性。




[*]人脸识别情景:我们可以模拟这种思想并应用在画面识别上。由像素组成菱角再组成五官最后到不同的人脸。每一层代表不同的不同的物质层面 (如分子层)。而每层的W存储着如何组合上一层的物质从而形成新物质。
如果我们完全掌握一架飞机是如何从分子开始一层一层形成的,拿到一堆分子后,我们就可以判断他们是否可以以此形成方式,形成一架飞机。
附:Tensorflow playground展示了数据是如何“流动”的。



物质组成视角:神经网络的学习过程就是学习物质组成方式的过程。 增加节点数:增加同一层物质的种类,比如118个元素的原子层就有118个节点。 增加层数:增加更多层级,比如分子层,原子层,器官层,并通过判断更抽象的概念来识别物体。按照上文在理解视角中所述的观点,可以想出下面两条理由关于为什么更深的网络会更加容易识别,增加容纳变异体(variation)(红苹果、绿苹果)的能力、鲁棒性(robust)。
数学视角:变异体(variation)很多的分类的任务需要高度非线性的分割曲线。不断的利用那5种空间变换操作将原始输入空间像“捏橡皮泥一样”在高维空间下捏成更为线性可分/稀疏的形状。
物理视角:通过对“抽象概念”的判断来识别物体,而非细节。比如对“飞机”的判断,即便人类自己也无法用语言或者若干条规则来解释自己如何判断一个飞机。因为人脑中真正判断的不是是否“有机翼”、“能飞行”等细节现象,而是一个抽象概念。层数越深,这种概念就越抽象,所能涵盖的变异体就越多,就可以容纳战斗机,客机等很多种不同种类的飞机。
页: [1]
查看完整版本: 神经网络,人工智能这块怎么入门?