顶点小说 > 都市小说 > 重生学神有系统 >第255章 调整超参数,以及防止过拟合
    江寒在这个F网络中,实现了一种新的训练策略,也就是迷你批次训练法。

    简单地说,就是每次在18万个训练数据中,随机抽取若干条数据,组成一个小包,作为训练的样本。

    然后,若干个小包组成一个完整的批次,训练若干个批次后,训练过程就宣告结束。

    显而易见,相较于一次训练全部数据,这样做既节省了资源,又能提高训练速度。

    这里涉及到3个超参数:每个小包的数据条数n,每批次包含的小包数量m,以及训练的总批次s。

    神经网络里,每个神经元的偏置和权重,都是在训练中获得的,称作参数。

    而学习速率、隐藏层神经元的数量,隐藏层的层数,权重初始化方案的选择、激活函数的选择、损失函数的选择……

    这些都是超参数,必须在神经网络训练之前指定。

    但由于缺乏理论指导,没有人知道这些超参数,到底如何选取才是最合理的。

    所以在实践中,往往先根据经验,暂时预设一个差不多的,然后在训练的过程中,根据反馈结果,慢慢进行调整。

    打造神经网络的过程中,最困难的就是超参数的选择,这往往意味着巨大的工作量。

    每次调整超参数,都要重新训练一次神经网络,才能知道这次调整是否成功。

    更麻烦的是,超参数之间并不是相互独立的,经常会调整了某一个,就会影响到另一个。

    极端情况下,就会像多米诺骨牌一样,一个影响一个,最后导致全盘重来。

    在原来的世界,机器学习算法工程师们经常为此挠破了头皮。

    所以他们又自嘲或者被戏称为“调参狗”……

    这个问题的解决,往往取决于网络设计者的经验。

    一名合格的调参狗……咳,算法工程师,往往能凭经验和直觉,大体确定超参数的取值范围,然后根据实际情况逐步优化,直到取得近似最优解。

    江寒当然算不上经验丰富,但前世玩神经网络的时候,也接触过不少讨论超参数选择的文章。

    以权重初始化举例,就有不少可行的方案:初始化为0值、随机初始化、Xavier初始化、HE方法等。

    其中,Xavier初始化又包含许多种做法。

    比如将权重w的随机初始化区间,设为正负sqrt(6/(n0+n1))之间。

    其中,n0是上一层神经元的个数,n1是本层神经元的个数。

    这是一个经验公式,很多时候都很好用,江寒还记得这个公式。

    其他超参数的选择,激活函数的选择、损失函数的选择……也有诸多可用的方法、方案。

    除了一些前世接触过的方法,江寒自己也有过许多奇思妙想,琢磨出来不少乱七八糟的超参数选择方案。

    这次做F模板,索性将它们全都编写成函数,塞到了模板代码中,用以备选。

    除此之外,还要解决过拟合问题。

    过拟合是机器学习的一道难关,一旦发生这种现象,就会导致训练好的模型,在训练集上表现优秀,而在陌生数据集上表现欠佳。

    这是无论如何都要避免的。

    要想避免过拟合,通常的做法有:扩大学习规模、降低网络规模、对权重参数规范化,以及非常激进的Dropout方法等。

    扩大学习规模,就是尽可能收集更多数据,进行训练。

    Kaggle的这场比赛中,官方提供了足足20万条训练数据,这意味着不怎么需要在这方面下功夫了。

    如果提供的训练数据较少,那么往往就需要人为扩展训练数据。

    比如:将图像略微旋转、平移、翻转、缩放、加入噪点像素……

    降低网络规模,的确可以减轻过拟合,但同时也削弱了学习能力,所以一般不作为优先选项。

    权重正规化也叫正则化(regurization),就是在未规范化的代价函数上,附加一个权重绝对值的和,使得网络倾向于学习少量的、重要度较高的权重。

    这一办法,江寒在这个模板中,也作为备选项加以实现了。

    至于Dropout方法,做法是按照给定的概率P,随机删除全连接网络中部分隐藏神经元,以达到简化网络,降低过拟合的效果。

    虽然挺简单,但江寒并不准备现在就用出来。

    这至少也价值一篇三区以上的论文,用在这种小比赛中,未免有些浪费。

    江寒将自己知道的、能想到的方法、方案,全都罗列出来,编制成函数,放进了模板代码中。

    然后将代码复制了130份,稍作修改,让它们分别使用不同的超参数设定策略。

    这样,就出炉了130种候选的训练方案。

    江寒将这些方案连同训练数据包,一起上传到了自己放在车库中的服务器和五台工作站中,然后指挥它们开足马力,同步进行训练。

    如果光靠笔记本电脑,这130份代码一个一个训练过去,怕不得两、三个月之后,才能轮一遍?

    现在就简单了,大约明天晚上,这130多份方案,就能得到初步的训练结果。

    到时候根据反馈,从中选择一个表现最好的,全力训练就可以了。

    这种做法,和有些人选男/女朋友的原则差不多。

    广泛培养,层层选拔,然后择优录取。

    至于选剩下的怎么办?

    先备着呗,反正又不吃草料……

    搞定这些事情之后,时间已经夜里10点半。

    江寒站起来,活动了一下筋骨,然后上床休息。

    刚钻进被窝,夏雨菲就依偎了过来。

    安静地躺了一会儿后。

    “你……”夏雨菲欲言又止。

    “怎么了?”江寒温和地问。

    “那个……那个鲍鱼,还、还没过劲儿吗?”

    江寒摇了摇头,实话实说:“已经没事了。”

    夏雨菲自责地说:“都怪我……”

    江寒笑了笑,促狭地问:“要是今晚上都过不了劲儿,你还想负责是怎么的?”

    夏雨菲咬了咬嘴唇,把头埋在他胸口里,一声不吭。

    这样江寒就明白了。

    她没准真有那个意思,虽然不可能动真格的,但很可能会……

    啧,早知道就不逞英雄了,偶尔装一次可怜,又不会伤筋动骨。

    嗯……

    不知道现在把话收回去重说,还来不来得及?

    在线等,挺急的。

    ……

    不知过了多久,两人先后入睡。

    江寒搂着小媳妇,美美地睡了一觉。

    第二天早上,仍然是五点左右,精神抖擞地起床。

    洗漱完毕后,江寒先远程登录了一下服务器,查看了一下训练进度。

    可惜没什么惊喜。

    和他预计的差不多,今天白天肯定是训练不完的了。

    所以,暂时只能耐心等候。

    关掉笔记本电脑,看了眼还躺在被窝里,睡得死沉死沉的夏雨菲,江寒不禁哑然失笑。

    昨天夏雨菲可能有点累到了,今早不出所料地赖床了。

    好吧,就让她好好休息休息吧……

    江寒这么想着,轻手轻脚地出门。

    先自己下楼,去餐厅吃了个早餐,然后步行去赛场。

    香格里拉的学城店,距离工大附中本来就不算远,走了10来分钟也就到了。

    今天是NOIP复赛的Day2,只要搞定今天的三道题,这场比赛对江寒来说,也就宣告落幕了。

    来到赛场外时,时间刚7点半出头,大多数选手和他们的指导教师,已经来到场地外等候。

    到处人声鼎沸,江寒找到了高老师,并再次看到了李山河和朱达昌。

    熊磊和他的指导教师贺纹章也在一旁。

    老高和贺老师凑在一起聊天。

    江寒也和三个战友兼竞争对手,在一边互相鼓励了一番。

    闲聊中,熊磊忽然提议:“等下午成绩公布了,咱们一起去唱k或者打台球,放松一番,怎么样?”

    “成绩最差的请客吗?”李山河角度刁钻。

    “可以考虑啊……”朱达昌也有点意动。

    大家纷纷看向江寒,只有他还没表态了。

    江寒想了想,说:“去玩玩也行,不过我最多只能陪你们玩到晚上七、八点钟,再晚就不行了。”

    一起出来比赛的,怎么也得照顾一下同伴的情绪。

    但也不能浪费太多时间,晚上还得抓紧时间,弄KAGGLE的比赛……