13,000 个可以调整的参数来让网络可以呈现不同的结果 所以当我们谈到学习的时候 就是在说如何让电脑去找到一大堆正确的参数 让它解决问题 有一个仔细想想会很吓人的情况
想象一下如果你需要手动调整这些权重和偏置 设定这些数字来让第二层识别一条边
然后让第三层识别图案
我个人认为这样想象会比把它整个当成一个黑盒子更好 因为当网络的输出和你的认知有所差异时 如果你能足够了解权重与偏置的关系 就更容易该怎么改变结构来修正
或是网络能输出正确的结果但是过程跟你想象中有差异 那么去挖掘权重和偏置的实际境况对于测试你的认知有帮助和找出所有可能的解决方案 顺带一提 你不觉得这个公式看起来有点复杂吗? 所以让我来示范以简单的符号来表达整个公式 如果你以后想要继续钻研神经网络就会很常看到
我们把这一层的激励函数放到一个矢量中 然后把所有的权重放到矩阵中 在这个阵列里的每一列将会对应到这一层和下一层的所有连线的权重 这代表矩阵相乘后的每一项都代表其中一个神经元的激励函数
矩阵相乘的结果就是对应的神经元激励函数
顺道一提 学习机器学习需要对线性代数有一定的了解 所以任何想要透过可视化的教学理解矩阵和矩阵乘法可以去看我的以前做的线性代数系列影片 特别是第三篇
回到正题 当我要加上偏置时也会把每一个偏置 放到矩阵里在和前面算出来的结果做矩阵加法 最后一步 我会用逻辑函数把整个结果包起来
意思是把最后得到的矢量一个一个丢进逻辑函数中 来计算出每一个结果 现在当我们用简单的符号来写下公式
就可以很清楚完整的表达每一层之间的关系
还有这也让我们更简单快速的编写代码 像是很多的对于矩阵运算有优化的函式库
还记得我一开始说神经元只是一个简单承载数字的东西吗 当然 它里面所装得数字取决于你给他的图像 所以更准确地说应该把神经元当作一个函数
它的输出是取决于上一层所有的神经元然后转换成一个介于0到1的数字
其实也可以把整个神经网络当作一个函数有着784个输入值和10输出值的函数
它是一个非常复杂的函数 用来选择正确图案的权重和偏置参数就有 13000 个 还会不停地用到矩阵乘法和逻辑函数
即便它看起来很复杂但却是很可靠的一个函数
我的意思是如果它看起来很简单
我们怎么能期望它辨识数字呢 但是它是如何完成这个任务的?
这个网络是如何只通过读取数据来学习如何调整权重和偏置的?
在影片的结尾 我邀请了 Lisha Li 她在博士研究是关于深度学习的理论 现在一个叫做 Amplify Partners 的创投公司任职
他们慷慨的赞助了这个影片 所以 Lisha 我们想要快速的提一下「Sigmoid」这个函数 据我所知早期的神经网络都会使用这个函数来让权重介于 0 到 1 之间 用来模仿生物学上的神经元是处于活耀还是不活耀的状态 (Lisha) 没错 但是现在神经网络几乎没有使用「Sigmoid」函数,是因为它已经太老套了是吗? (Lisha) 没错,
更准确的说是使用 ReLU 更容易训练 (3B1B) ReLU 的全名是「Rectified linear unit线性整流函数」 对吧
(Lisha) 对,这个函数会返回 0 跟输入值的最大值 我的解释是使用这个函数比较符合 生物学的原理 类似于 神经元在甚么时候活耀或不活耀 当它超过一个门槛的时候 它就像恒等函数一样 但如果它没有超过则输出 0 所以它是一个很简单的函数
使用「Sigmoid」并没有帮助训练或是说它很难以训练 后来有人尝试了 ReLU 发现它的表现难以置信的好 在深度神经网络。
资源
什么是神经元,为什么有层,其背后的数学原理是什么?
帮助资助未来的项目: / 3blue1brown
本系列的书面/互动形式
Amplify Partners 为本项目提供额外资金
拼写错误更正:在 14 分 45 秒处,偏差向量的最后一个索引是 n,而实际上它应该是 k。感谢您敏锐的眼睛捕捉到了这一点!
对于那些想了解更多信息的人,我强烈推荐 Michael Nielsen 介绍神经网络和深度学习的书
这本书有两点很巧妙。首先,它是免费的,所以如果你从中有所收获,请考虑与我一起以尼尔森的方式进行捐赠。其次,它的重点是浏览一些您可以自己下载的代码和数据,其中涵盖了我在本视频中介绍的相同示例。积极学习!
如需更多视频,Welch Labs 还提供了一些有关机器学习的精彩系列:
• Learning To See [Part 1: Introduction]
• Neural Networks Demystified
对于那些想要更深入了解的人,请查看 Goodfellow、Bengio 和 Courville 撰写的文本“深度学习”。
参考
https://youtu.be/aircAruvnKk?si=vvJtlByXpXaDHj7y
文章评论