目录
2.4、早期停止(early stopping) 方式调试AI系统
第一章、简介
- 本文基于吴恩达人工智能课程做学习笔记、并融入自己的见解(若打不开请复制到浏览器中打开)https://study.163.com/courses-search?keyword=吴恩达。
- 本文第二章介绍ML策略的正交化。
第二章、正交化
2.1、正交化之案例一
本小结,吴恩达通过几十年前的模拟电视机进行类比,通过调整参数的方式阐述他定义的正交化。类比过程中,他的正交化定义是,通过调整某个参数,让电视画面居中。
- 搭建机器学习系统的挑战之一是,你可以尝试和改变的东西太多太多了。包括比如说有那么多的超参数可以调。
- 我留意到那些效率很高的机器学习专家有个特点,他们思维清晰对于要调整什么来达到某个效果非常清楚,这个步骤我们称之为正交化。
- 让我告诉你正交化是什么意思吧。如图2-1所示,这是一张老式电视图片,有很多旋钮可以用来调整图像的各种性质。
- 所以对于这些旧式电视可能有一个旋钮用来调图像垂直方向的高度;另外有一个旋钮用来调图像宽度;也许还有一个旋钮用来调梯形角度;还有一个旋钮用来调整图像左右偏移;还有一个旋钮用来调图像旋转角度之类的。
- 电视设计师花了大量时间设计电路,那时通常都是模拟电路,来确保每个旋钮都有相对明确的功能。
- 想像一下 如果你有一个旋钮调的是 0.1x 图像高度,+0.3x 图像宽度,- 1.7x 梯形角度,+ 0.8乘以图像在水平轴上的坐标等等。如果你调整旋转角度按钮, 那么图像的高度、宽度、梯形角度、平移位置 全部都会同时改变。
- 如果你调整旋转角度按钮,那几乎不可能把电视调好,让图像显示在区域正中。所以在这种情况下正交化指的是电视设计师,设计这样的旋钮使得每个旋钮都只调整一个性质,这样调整电视图像就容易得多,就可以把图像调到正中。
图 2-1
2.2、正交化之案列二
- 如图2-2所示,接下来是另一个正交化例子:你想想学车的时候,一辆车有三个主要控制,第一是方向盘,方向盘决定你往左右偏多少,还有油门和刹车,就是这三个控制。
- 其中一个控制方向,另外两个控制你的速度。这样就比较容易解读,知道不同控制的不同动作会对车子运动有什么影响。
- 想象一下,如果有人这么造车——造了个游戏手柄,手柄的一个轴控制的是0.3 *转向角 - 0.8*速度。然后还有一个轴控制的是,2*转向角+ 0.9*车速.
- 理论上来说,通过调整这两个旋钮,你是可以将车子调整到你希望得到的角度和速度,但这样比单独控制转向角度、分开独立的速度控制要难得多。
- 所以正交化的概念是指,你可以想出一个维度,这个维度你想做的是,控制转向角。还有另一个维度,来控制你的速度。那么你就需要一个旋钮尽量只控制转向角;另一个旋钮,在这个开车的例子里,其实是油门和刹车控制了你的速度。
- 但如果你有一个控制旋钮将两者混在一起,比如说这样一个控制装置同时影响你的转向角和速度,同时改变了两个性质,那么就很难令你的车子以想要的速度和角度前进。
- 然而正交化之后,正交意味着(速度与角度)互成 90 度,设计出正交化的控制装置,最理想的情况是和你实际想控制的性质一致,这样你调整参数时就容易得多,可以单独调整转向角,还有你的油门和刹车 令车子以你想要的方式运动。
图2-2
2.3、案例与机器学习的联系
案例与机器学习存在着调参数的联系,比如说电视的某个按钮(参数)调整,就类似AI中的某个参数,从而达到优化的目的。
- 那么这与机器学习有什么关系呢?要弄好一个监督学习系统,你通常需要调你的系统的旋钮来确保四件事情。
- 首先,你通常必须确保,至少系统在训练集上得到的结果不错。所以训练集上的表现必须通过某种评估,达到能接受的程度。对于某些应用,这可能意味着达到人类水平的表现,但这取决于你的应用,我们将在下周更多地谈谈如何与人类水平的表现进行比较(效益函数在训练集要表现良好)。
- 然后,在训练集上表现不错之后,你就希望系统也能在开发集上有好的表现(效益函数在开发集要表现良好)。
- 接着,你希望系统在测试集上也有好的表现(效益函数在测试集要表现良好)。
- 最后,你希望系统在测试集上,系统的成本函数在实际使用中表现令人满意。比如说,你希望猫图片识别系统的应用得到用户满意。我们回到电视调节的例子,如果你的电视图像太宽或太窄,你想要一个旋钮去调整,你可不想要仔细调节五个不同的旋钮,它们也会影响别的图像性质,你只需要一个旋钮去改变电视图像的宽度。
- 所以类似地,如果你的算法在成本函数上不能很好地拟合训练集,你想要一个旋钮或者一组特定的旋钮 确保你的可以调整你的算法,让它很好地拟合训练集。
- 所以你用来调试的旋钮是,你可能可以训练更大的网络,或者可以切换到更好的优化算法,比如Adam 优化算法 等等,我们将在本周和下周讨论一些其他选项。
- 相比之下,如果发现算法对开发集的拟合很差,那么应该有独立的一组旋钮。你希望有一组独立的旋钮去调试,比如说,你的算法在开发集上做的不好,它在训练集上做得很好,但开发集不行。然后你有一组正则化的旋钮可以调节,尝试让系统满足第二个条件。类比到电视,就是现在你调好了电视的宽度,如果图像的高度不太对,你就需要一个不同的旋钮来调节电视图像的高度,然后你希望这个旋钮尽量不会影响到电视的宽度。
- 增大训练集可以是另一个可用的旋钮,它可以帮助你的学习算法更好地归纳开发集的规律。如果系统在开发集上做的很好 但测试集上做得不好呢? 如果是这样,那么你需要调的旋钮可能是更大的开发集,因为如果它在开发集上做的不错但测试集不行,这可能意味着你对开发集过拟合了,你需要往回退一步,使用更大的开发集。
- 最后,如果它在测试集上做得很好,但无法给你的猫图片识别系统应用的用户提供良好的体验,这意味着你需要回去,改变开发集或成本函数,因为如果根据某个成本函数,系统在测试集上做的很好,但它无法反映你的算法在现实世界中的表现,这意味着要么你的开发集分布设置不正确,要么你的成本函数测量的指标不对。
2.4、早期停止(early stopping) 方式调试AI系统
- 我们很快会逐一讲到这些例子,我们以后会详细介绍这些特定的旋钮,在本周和下周晚些时候会介绍的。
- 所以如果现在你无法理解全部细节,别担心,但我希望你们对这种正交化过程有个概念,你要非常清楚到底是四个问题中的哪一个;知道你可以调节哪些不同的东西,尝试解决那个问题。
- 当我训练神经网络时,我一般不用早期停止(early stopping),这个技巧也还不错,很多人都这么干。但个人而言,我觉得早期停止有点难以分析,因为这个旋钮会同时影响你对训练集的拟合,因为如果你早期停止,那么对训练集的拟合就不太好。但它同时也用来改善开发集的表现,所以这个旋钮没那么正交化,因为它同时影响两件事情,就像一个旋钮同时影响,电视图像的宽度和高度,不是说这样就不要用早期停止这个按钮(或者说调整早期停止这个参数),如果你想用也是可以的,但如果你有更多的正交化控制,比如我这里写出的其他手段(如2.3小结所示),用这些手段调网络会简单不少。
2.5、小结
- 所以,我希望你们对正交化的意义有点概念,就像你看电视图像一样。
- 如果我的电视图像太宽,所以我要调整这个旋钮。或者它太高了,所以我要调整那个旋钮。或者它太梯形了,所以我要调整这个旋钮,这就很好。
- 在机器学习中,如果你可以观察你的系统,然后说,这一部分是错的,它在训练集上做的不好、在开发集上做的不好、它在测试集上做的不好。
- 或者它在测试集上做的不错、但在现实世界中不好。这就很好,必须弄清楚到底是什么地方出问题了,然后我们刚好有对应的旋钮,或者一组对应的旋钮,刚好可以解决那个问题,那个限制了机器学习系统性能的问题,这就是我们这周和下周要讲到的。
- 如何诊断出系统性能瓶颈到底在哪,还有找到你可以用的一组特定的旋钮,来调你的系统来改善它特定方面的性能,我们开始详细讲讲这个过程吧。