在《数与图(19)》中,我们明确了机器学习的基本方法——训练,并就关键的技术问题给予了简要的解释,在此基础上,写出了部分程序,包括训练数据列表、求真假y列表过程、求方差过程以及求方差对系数求导过程。本文的目标是利用上述数据及过程,实现对模型的训练,并绘制误差曲线。
一、训练系数
首先创建一个无返回值过程——训练系数,该过程的参数为“训练次数”,代码如图1所示。
图1 无返回值过程——训练系数
如果你理解了《数与图(19)》中讲述的内容,那么理解上述过程应该是不困难的。顺便说一下,这是经过优化的算法——内外两层循环。最初的程序只有内层循环,在训练过程中,发现系数无法收敛到目标值,即便设定了再多的训练次数,也无法实现目标。这是因为a、b、c三个系数之间相互影响,在b=1及c=1的前提下,a永远都不能收敛到0。而采用两层循环的方法,让a、b、c轮流调整,使得b、c的调整结果更有利于a的快速收敛。
下面编写训练按钮的点击事件处理程序,首先初始化系数,然后调用训练系数过程,最后将训练结果显示在标签上,代码如图2所示。