背景知识:机器怎么学会做文字接龙
详见:https://blog.csdn.net/qq_26557761/article/details/136986922?spm=1001.2014.3001.5501
在语言模型的修炼中,我们需要训练资料来找出数十亿个未知参数,这个过程叫做训练或学习。找到参数后,我们可以使用函数来进行文字接龙,拿这组参数来使用叫做测试或者是叫做推论。
语言模型学习的三个阶段虽然训练资料不同,但都是在学习文字接龙,所有阶段做的事情是一样的。
机器学习中找参数的挑战
在机器学习中,寻找合适的参数是一个挑战。参数优化过程被称为最佳化,需要设定超参数来确定优化方法。训练过程具有随机性,有时可能会失败,导致得到的参数不符合训练资料。此时,需要换一组超参数再试一次。由于训练可能需要大量的算力,因此需要足够的计算资源来支持参数优化过程。
(1)最佳化与超参数
机器学习就可以帮我们根据训练资料找出符合这个训练资料的参数。这个找参数的过程又叫做最佳化,它的英文是optimization。你可以把最佳化想成是一部机器。这部机器使用前需要设定一些参数。设定这个机器的参数叫做超参数,它的英文是hyper parameter。那你设定这些超参数以后,你就决定了最佳化的方法。
把最佳化的方法固定下来之后,你把这一些训练资料丢到这个机器里面。这个机器经过一番运作以后,我就产生参数,就产生你要的结果。
但是这个训练的过程不是每一次都会成功,训练是有随机性的。有时候训练可能会失败,也就是你按下了这个机器的启动钮之后,把训练资料丢进去,经过一番运算得出来的参数结果不是你要的。所谓不是你要的意思就是说这些参数没有符合训练资料的内容。
那如果遇到这种状况,如果遇到这个训练失败,得到的这个参数没有符合训练资料的时候怎么办呢?通常常见的做法就是换一组超参数再上一次掉。当然这些超参数对于训练结果的影响还是有一些蠡路可循,但是中间的过程非常的复杂,你很难搞清楚说为什么这种超参就会给你这个结果。
所以这就是为什么大家常常说这个训练模型就需要算力,这个算力就是用在最佳化的过程,尤其是用在假设你的训练是有可能失败的,你需要换多组超参数不断的尝试,最后才可以找到一个你要的结果。那你就需要这个时候你就需要大量的算力。
可能常常听到有人说做这个机器学习或做深度学习就是调参数。这个调参数指的并不是这里我们要找的参数,这边调参数指的是这调超参数,这边找出了根据训练资料找出来的参数是自动找到的。这些参数可能有上亿个,所以你也不可能用人的力量找出来。但是超参数还是需要能设定的。所以在一做这个最佳化的过程的时候,你要去先调整这个超参数,调整成你要的样子,再把这个最佳化的过程跑下去,期待你可以。然后就开始祈祷说你最后跑出来的结果是你要的那这个超参数往往你很难设一次就得到你要的结果是需要调的。所以你才会常常听到有人说做深度学习,做机器学习就是调参数。则调参数指的是调超参数。
(2)训练成功,但测试失败(过拟合)
然而这不是找参数唯一的挑战,你还可能遇到另外一个状况,这个状况是训练成功,但是测试失败。