在神经网络的使用过程中,需要经历一系列步骤,从网络结构的选择到训练过程的实施。以下是使用神经网络时的主要步骤的小结:
一、网络结构的选择
-
输入层: 第一步是选择网络结构,即确定神经网络的层数以及每层的单元数。输入层的单元数应该等于训练集的特征数量。
-
输出层: 输出层的单元数应该等于训练集中结果的类的数量。
-
隐藏层: 如果有隐藏层,确保每个隐藏层的单元数相同。通常情况下,隐藏层单元的数量越多越好。需要决定的是隐藏层的层数以及每个中间层的单元数。
二、训练神经网络
-
参数的随机初始化: 对网络的参数进行随机初始化,打破对称性,防止所有参数具有相同的初始值。
-
正向传播: 利用正向传播方法计算所有的预测结果(hypothesis)。
-
代价函数: 编写计算代价函数 J 的代码,衡量预测结果与实际结果的误差。
-
反向传播: 利用反向传播方法计算所有偏导数,用于更新参数。
-
数值检验: 使用梯度检验方法检验通过反向传播计算出的偏导数,确保其准确性。
-
优化算法: 使用优化算法(如梯度下降)来最小化代价函数,更新参数,使得神经网络逐渐学习到数据的特征。
三、自主驾驶
在这一部分的视频中,将介绍一个具有历史意义的神经网络学习的案例,即使用神经网络实现自主驾驶,使汽车通过学习来自主进行驾驶。这个例子涉及到一个名为ALVINN(Autonomous Land Vehicle In a Neural Network)的智能系统,它通过观察人类驾驶行为来学习驾驶技能。
Dean Pomerleau,我的同事,向我们展示了ALVINN的工作原理。ALVINN能够控制一辆改装版的军用悍马,这辆悍马配备了各种传感器、计算机和驱动器,用于进行自动驾驶的导航实验。
下面是ALVINN实现自主驾驶的基本步骤:
-
训练过程: 首先,ALVINN需要经过训练,这个训练过程涉及让人类驾驶员驾驶汽车。训练过程中,ALVINN每两秒会生成一张数字化的路况图像,并记录驾驶员的驾驶方向。这些训练集图片被压缩为30x32像素,并作为输入提供给ALVINN的三层神经网络。
-
神经网络学习: 通过使用反向传播学习算法,ALVINN的神经网络会逐渐学习到与人类驾驶员相似的驾驶方向。一开始,神经网络选择的方向是随机的,但经过足够长的训练时间后,神经网络能够准确地模拟人类驾驶员的驾驶行为。
-
实时驾驶控制: 训练完成后,ALVINN能够每秒生成12次数字化图片,并将这些图像传送给神经网络进行实时训练。多个神经网络同时工作,每个网络都生成一个行驶方向和一个预测自信度参数。最终,具有最高自信度的神经网络的输出将被用于控制车辆的方向。
这一简单而强大的基于反向传播的神经网络使得ALVINN能够实现自主驾驶,通过学习模仿人类驾驶者的行为,对于当时来说,这是一项令人惊讶的成就。虽然目前有更为先进的自动驾驶技术,但ALVINN展示了神经网络在实现复杂任务上的潜力。
参考资料:
[中英字幕]吴恩达机器学习系列课程
黄海广博士 - 吴恩达机器学习个人笔记