直线机

CrashCourseAI系列课程第4集

发布时间:2023/3/7 0:07:49   
白癜风治疗过程 https://m-mip.39.net/baidianfeng/mipso_4206044.html
                            

STEAM在线

以下文章来源于大小孩er,作者墨先sen

大小孩er

创新教育产品经理学习科学研究僧

CrashCourseAI系列课程第4集:训练神经网络;

依旧是人类主持人Jabril和他的AI机器人JohnGreenBot.

上回说到,制作人工大脑的方法是用神经网络,试用数百万个神经元,神经元之间有十亿或万亿各个连接。

当今的一些神经网络又快又大,能够比人类更好地完成一些诸如下棋和预测天气等任务。

但是,仅仅搭建一个空的神经网络是不够的,神经网络还需要通过犯错来学习。

01

基本概念

神经网络用一个叫“反向传播”的算法来处理错误,确保所有导致错误的神经元会被重新调整权重。神经网络有两大部分:结构和权重。

结构:包括神经元和它们之间的连接。

权重:用于在计算时精确调整数字。

所以如果神经网络犯错误,一般是因为权重没有调对。我们就要更新权重,让它下次表现更好。给神经网络找到最佳权重的任务叫“优化”。

02

最佳拟合

下面的例子帮助理解“优化”的基本原则。

假设我管理着一个游泳池,我想预测下周会有多少人来,以方便安排足够多的救生员。

一个简单方法是画个图,比如在过去几周里,每天来了多少人,当天的华氏温度是多少。然后在图里寻找模式来进行预测。计算机可以用一种优化策略叫“线性回归”。

我们先画一条随机直线,勉强算是拟合了一部分数据点。

为了进行优化,需要量化它的错误程度。

所以我们计算每个数据点到线之间的距离,把他们加起来,就得到了错误值。

线性回归的目标是调整直线,使错误值尽可能地小。

我们希望这条线尽可能拟合训练数据。这条线就叫“最佳拟合线”。我们可以用这条线预测任意温度下有多少人会来游泳。

但是,这条线有一部分很不合理。例如,超冷的天气,来的人会是负数。而超热的天气,来的人比泳池能容纳的还多。

为了让结果更加准确,我们可能需要两个以上的特征。比如加上湿度数据,把途从2D变成3D,最佳拟合线就变成了最佳拟合面。

但假设我们加上第四个特征,比如那天有没有下雨,就无法将它可视化了。

特征越多,图的维度越多,更难优化,更难拟合训练数据。这时候用“神经网络”就方便了。

03

反向传播

把很多神经元连在一起,运算时带一个权重值,神经网络可以学会如何解决复杂问题。其中的最佳拟合线变成了一个奇怪的多维函数。

我们给JohnGreenBot一个没有训练过的神经网络,还是游泳池的例子,这次特征用温度、湿度、是否下雨等等,输出层预测来泳池的人数。

(先不考虑如何设计这个神经网络的结构,只关心权重。)

和往常一样,权重值一开始是随机数,这次不是一条线,因为有很多输入,所以是一个大函数,复杂到无法可视化,类似于很多奇怪的多维图形,甚至没法给它取名。

为了训练神经网络,我们给JohngreenBot过去10天的游泳池数据,从第一天开始,温度华氏80度,湿度65%,没下雨(用0表示)。

神经元会把特征值乘以权重,把结果相加传到隐藏层,直到输出神经元得到答案。

(这时JohnGreenBot预测泳池有个人)。

神经网络的输出结果和实际人数有差异,当天实际来了个人。因为只有一个输出神经元,错误值差异是45人。

然而,其他一些神经网络,输出层有多个神经元,预测的答案和正确的答案之间区别不只是一个数字,这种情况下,可以用“损失函数”来表示错误值。

接下来,我们调整权重,让它下次更加准确。机器人通过错误来学习,就像之前的感知器程序通过按钮来监督学习。但由于神经网络很复杂,这次没法这样做了。

为了帮助神经网络学习,科学家和数学家提出了一种算法叫“误差反向传播”,简称“反向传播”。

通过损失函数,看前一层里哪些神经元犯的错、看哪些神经元对错误结果的影响大一些,所以他们的权重调整的更多。

因为信息是向后传递的,所以叫“反向传播”:输出神经元将误差返回到前一层,并根据误差调整权重,而隐藏层神经元把误差返到前一层调整应用于特征的权重。

04

优化

我们的目标是找到权重的最佳组合,使得误差最小。

用一个比喻来解释优化。

想象一下,神经网络中的权重就像地图上的维度和经度坐标。神经网络的误差值是高度——越低越好。探险家JohnGreenbot在找山谷最低点。最低点的误差值最小,是神经网络全局最优解的权重。

但是,JohnGreenBot不知道山谷最低点在哪儿,通过随机设定初始权重,就像把它随意扔到丛林里。它只知道自己现在的经度、纬度和高度。也许运气足够好,刚好在最深处的附近,运气不好就在很远的山顶。

唯一的办法是去探索。丛林太密,很难看得很远,JohnGreenBot的最好方案是看看周围并做一些猜测。

它注意到往东北方向移动可以往下一点,所以它走了一步,并更新纬度和经度。在这个新的文职,它环顾四周,走了一步,再次降低高度。走一步,再走一步,每走一步都更新坐标并降低高度。最后,JohnGreenBot环顾四周,发现不能再降低高度了,它因找到最低点而开始庆祝。

但它可能高兴得太早了。如果看整个的地图,我们可以看到JohnGreenBot只找到了一个小峡谷,比刚开始低很多,但还不是山谷的最低点。它找到了一个“局部最优解”,误差值较小,但不是最小的。

反向传播和学习总会有很多小步骤。对任何神经网络来说,优化都是困难的。

继续之前的例子,把优化比喻成探索地图,我们永远无法确定是否在朝正确方向前进,是否已经到了最低处的山谷(也就是全局最优解)。

但是我们可以使用一些技巧,比如,把探险家随便放在地图上时,它可能距离最低点很远,中间隔了一条巨大的山脉。所以,我们可以多试几个随机起点,确保神经网络不会陷入局部最优解。

或者扔很多个探险家,同时探索。如果计算机有很多个处理器,同时探索是非常有用的。

我们还可以调整探险家的步长,让它直接跨过小山坡。一步的大小叫“学习速率”,它是神经元在每次反向传播时,权重调整的程度。

我们总是在找更有创意的方法来解决问题:尝试不同权重组合,让损失函数最小化。

05

过拟合

但是,就算用了大量训练数据和反向传播找全局最优解,也只解决了一半问题。另一半是检查AI能否回答新问题:解决见过的问题很容易,就像直到答案之后去考试,也许能拿到高分,但实际上没学到什么。要测试是否真正学会了,要解决没有见过的问题。神经网络也是如此。

刚才,JohnGreenBot用泳池数据来预测游泳人数,有几十个特征:如温度、湿度、是否下雨、星期几、风速、草有多长、泳池边的蝴蝶数量以及救生员的平均GPA。只要计算机能顶得住,数据越多,越好找模式和提高准确度。

随着学习,反向传播会调整神经元的权重使得神经网络的输出和训练数据匹配。这叫“拟合训练数据”。

因为特征很多,是找一个多维函数来拟合。有时,“反向传播”让神经网络拟合得太好了,大的数据集中有很多巧合关系。比如缅因州地离婚率和美国人造黄油的消费相关、滑雪收入和困在床单中死亡的人数相关。

神经网络很擅长寻找这类相关关系,但可能会导致问题。如果我们给神经网络一些新数据,新数据不符合这些愚蠢的相关性,它可能会产生一些奇怪的错误。这种问题叫“过拟合”。

防止过拟合最容易的方法是让神经网络的结构保持简单。如果重新训练JohnGreenBot的游泳池人数的预测程序,这次不输入青草地长度和蝴蝶地数量等数据,发现结果的准确度没有变化,那么最好忽略这些特征。

所以,神经网络的训练不光是一堆数学问题,还要考虑如何将手上的问题用最合适的特征来表示,以及考虑程序可能会犯哪些错误。

(完整视频)

06

下集预告

下节课(如果还有下节课的话)是本课程的第一个上手实验,我们会应用学过的知识,一起做一个神经网络。

关联阅读:

CrashCourseAI系列课程:AI概述

CrashCourseAI系列课程第1集:什么是AI

CrashCourseAI系列课程第2集:监督学习

CrashCourseAI系列课程第3集:神经网络和深度学习

(声明:除STEAM在线原创文章外,STEAM在线分享和转载的文章皆为促进STEAM教育在中国的传播,仅做学习交流,非商业用途,都会注明来源,如文章、照片的原作者有异议,请联系后台快速处理或删除,谢谢支持。)

STEAM在线交流群

0+老师、家长,优质教育内容推荐

长按

转载请注明:http://www.aideyishus.com/lkgx/3565.html

------分隔线----------------------------