大家好, 欢迎回到课程和深度学习｡
既然我们已经看到了神经网络的作用, 现在是时候了解它们是如何学习的了｡
所以让我们直接进入它｡
有两种根本不同的方法可以让程序做你想让它做的事情｡
一种是硬编码, 你告诉程序具体的规则和你想要的结果, 你只是全程指导它,
你解释程序必须处理的所有可能的选项｡
另一方面, 你有神经网络, 你可以创建一个｡
使程序能够理解它需要自己做什么的工具｡
所以你基本上创建了这个神经网络, 你给它输入, 你告诉它你想要什么作为输出,
然后你让它自己解决所有问题｡
两种根本不同的方法｡
这是我们在学习这些教程时要记住的｡
我们的目标是创建这个网络, 然后它自己学习｡
我们将避免试图把规则｡
我现在可以给你们举一个很好的例子, 这在课程中会更进一步, 但这只是一个非常直观的例子｡
例如, 你如何区分一只狗和一只猫, 左边有四只？
在左边描述的方法中, 你可以对一些东西进行编程, 比如猫的耳朵必须是这样的｡
注意胡须, 注意这种鼻子｡
注意这种脸型｡
注意这些颜色｡
你可以描述所有这些东西, 你会有条件, 比如如果耳朵是尖的,
那么猫, 如果耳朵是下垂的, 那么可能是狗, 等等｡
另一方面, 对于一个神经网络,
你只需要编码神经网络, 你编码架构, 然后你把神经网络指向一个文件夹, 里面有所有这些猫和狗的图片, 这些图片已经分类了｡
你说出来, 好吧, 我抓住你了｡
我有一些猫和狗的图像｡
去学学什么是猫吧｡
去学学什么是狗吧｡
而神经网络会自己理解它需要理解的一切｡
然后再往下, 一旦它被训练好了, 当你给予它一个新的猫或狗的形象时, 它就能理解它是什么｡
所以他们在那里｡
这是两种根本不同的方法｡
今天我们将慢慢地开始了解第二种方法是如何工作的｡
好吧, 我会的
所以我们直接进入正题吧｡
我们有一个非常基本的神经网络, 它有一层, 这叫做单层, 前馈神经网络,
它也叫感知器｡
现在, 在我们继续之前, 有一件事我们确实需要调整, 那就是现在的输出值,
你可以看到, 这就是为什么我们需要在那里放一个y帽子｡
原因通常是, Y代表实际值, 这就是我们要用到的｡
所以Y是我们看到的实际值｡
实际上, 输出值是算法的预测值, 通过神经网络, y
hat是输出值｡
基本上这就是产值的单位｡
感知器是1957年由弗兰克·罗森布拉特发明的｡
他的整个想法是创造一种可以学习和自我调整的东西｡
这就是我们现在要看的｡
所以我们有一个感知器｡
让我们来看看感知器是如何学习的｡
假设我们有一些输入值, 这些值被提供给感知器, 或者基本上是神经网络｡
然后应用激活函数, 我们得到一个输出, 现在我们要在图表上绘制输出｡
这就是我们的输出y hat｡
现在我们需要做的是为了能够学习, 我们需要比较输出值和实际值,
我们希望神经网络得到正确的｡
这就是Y值｡
所以如果我们在这里画出来, 你会发现有一点不同｡
现在我们要计算一个函数, 成本函数是实际值和输出值的平方差的一半｡
现在有很多方法可以得到一个代价函数｡
您可以使用许多不同的成本函数｡
这可能是最常用的类函数, 也是我们专门使用这个函数的原因｡
当我们讨论梯度下降时, 我们会进一步了解.
但现在我们要承认这是代价函数.
基本上, 成本函数告诉我们的是, 在你的预测中, 误差是多少？
我们的目标是最小化代价函数因为代价函数越小, y就越接近Y.
只要我们达成一致, 我们就继续｡
所以基本上从这里开始, 这就是我们的成本函数｡
从这里开始, 我们要做的是, 一旦我们比较了,
我们要把这些信息反馈回神经网络.
好了, 我们走吧｡
这些信息会返回到神经网络中, 然后传递到权重中, 权重会得到更新.
基本上, 在这个非常简单的神经网络中,
我们唯一能控制的就是权重wone, wtwo, 一直到wm, 我们的目标是最小化代价函数｡
所以我们能做的就是更新权重｡
所以我们更新了权重, 稍微调整了一下, 我们会找到的, 但是现在我们同意我们已经有了｡
然后我们继续｡
所以我在这里放了这个数据的截图, 只是为了说明一点, 在整个实验中,
我们现在所做的一切, 都是在处理这一行｡
所以我们要处理的是一个数据集, 例如, 我们要处理的是你学习了多长时间｡
比如我们预测的变量是你在考试中会得到什么结果｡
我们得到的因变量是你学习了多少小时？
你睡了几个小时, 在学期中期的测验中你得到了什么？
所以在学期中间有一个小测验｡
你在那里得到了多少百分比？
所以基于这些变量, 我们试图预测你的考试成绩｡
在考试中, 93%, 这是实际值｡
所以这就是为什么, 所以, 我们把这三个值, 第二次输入到神经网络中,
然后我们把结果和Y进行比较｡
让我们来看看它是如何工作的｡
我们将这些值输入神经网络｡
所有的东西都要调整, 重量也要调整｡
如你所见, 这又是一次, 我们要输入值｡
同样, 这里的重点是, 我们正在喂养这些相同的价值观｡
所以我们只有一行｡
我们在试着我们在一排训练｡
这是因为这只是一个非常简单的基本示例｡
然后我们会看到当有更多的行时会发生什么｡
所以, 我们在成本函数中输入这些行, 得到调整｡
正如你所看到的, 所有的事情都是沿着这些路线发生的｡
正如你所看到的, 每次我们的白色帽子改变, 因为我们调整了重量, 我们的高头也改变了,
我们的成本函数也改变了｡
让我们再看看｡
所以我们养活那些戴白色的人是在变, 成本函数也是在变｡
我们将信息反馈给权重, 以便再次调整权重｡
我们每次都输入相同的值, 每次都调整好, 然后回到权重,
再输入一次, 再输入一次｡
所以我们调整了权重, 调整了权重, 我们输入了信息, 然后就这样｡
所以这一次y等于函数0｡
通常我们不会得到等于零的代价函数｡
但这是一个非常简单的例子｡
所以希望每次我们输入同一行的时候, 所有这些都是有意义的, 因为在这个例子中,
我们只是在处理神经网络中的一行｡
然后权重得到, 值乘以激活函数的应用方式｡
我们得到y hat y hat和y相比｡
然后我们看到成本函数是如何变化的｡
反馈将这些信息反馈回神经网络, 然后再次调整权重,
然后我们对同一行重复相同的过程｡
我们试图最小化这个代价函数｡
所以到目前为止, 我们只处理了这一行｡
让我们看看当您有多行时会发生什么｡
这是完整的数据集｡
我们有八行你睡了多少小时, 或者也许这些是不同的学生在参加同一个考试｡
他们还学习了多少小时, 考试前睡了多少小时, 他们在测验中得到了什么,
以及他们的最终成绩｡
就像你在左边看到的, 我有八个这样的认知｡
实际上, 它们都是同一个感知器｡
所以这一点也很重要｡
我只是把它乘以八次, 这样我们就能从概念上理解了｡
但这里重要的是相同的神经网络｡
我们将把这些输入同一个神经网络｡
所以我们走吧｡
我们开始吧
你们会听到, 艾伦提到的一个时期是, 我们遍历整个数据集,
在所有这些行上训练神经网络｡
所以我们走吧｡
我们开始吧
这是我们的第一排, 这是第一排的y帽子.
还有第二排｡
第二排有个白色帽子｡
所以, 每次都被输入到同一个神经网络中｡
我只是复制了几次, 这样我们就可以直观地看到这是如何发生的｡
然后, 又一次, 它再次发生｡
那是第三排
第四排｡
这是第四排的白色, 以此类推｡
基本上, 我们也会为其余四行获得相同的值｡
所以每次我们把一行输入到神经网络中, 我们就得到一个值｡
然后与实际值进行比较｡
所以它们是实际值｡
因此, 对于每一行, 我们都有一个实际值｡
现在基于所有这些白色和y之间的差值,
我们可以计算出成本函数, 它是白帽和y之间所有差值的平方和, 所有这些都减半了｡
这是我们的成本函数｡
基本上, 在我们得到完整的成本函数后, 我们会返回并更新权重, 我们更新aw1, w2,
w3｡
这里要记住的重要一点是, 所有这些感知器, 所有这些神经网络实际上是一个神经网络｡
所以他们不是八个人｡
只有一个｡
当我们更新权重时, 我们会更新这个神经网络中的权重｡
所以基本上, 所有行的权重都是一样的｡
所以不是每一行都有自己的权重｡
现在, 所有行共享权重｡
这就是为什么我们研究了成本函数, 它是差值的平方和, 然后我们更新了权重｡
从现在开始, 这只是一次迭代｡
接下来, 我们将再次运行整个过程｡
我们要把每一行都输入到神经网络中, 找出我们的成本函数, 然后再做一次｡
就像我们之前看到的, 我们只有一行, 我们一遍又一遍地做着同样的事情｡
但现在我们要做8行､ 800行或8000行｡
无论数据集中有多少行, 都要执行此过程, 然后计算成本函数｡
这里的目标是最小化代价函数, 一旦找到代价函数的最小值, 就得到最终的神经网络｡
这意味着您的权重已经调整, 并且您已经找到了用于训练的数据集的最佳权重, 您可以进入测试阶段或应用阶段｡
这整个过程被称为反向传播｡
你可能还想阅读一些关于成本函数的内容｡
我知道我们刚刚谈到了一个, 他们是许多不同的｡
良好的文章位于交叉验证｡
它被称为成本函数列表, 用于神经网络和应用程序｡
URL就在那里, 但你可以在谷歌上搜索那个确切的搜索词或搜索短语, 你会看到这个将是第一个弹出的｡
它实际上有一些很好的例子和应用程序或不同成本函数的用例｡
因此, 如果您有兴趣了解更多关于成本函数的信息, 请查看这篇文章｡
在这一点上, 我希望你喜欢今天的教程｡
我期待着下次见到你｡
在此之前, 请尽情享受深度学习｡