上节课当中,我们把模型放到 Kaggle 上,用他的免费 GPU 资源进行了训练,等他跑完之后呢,就可以把缓存的模型文件下载下来,然后做模型测试了。

但是,我课后发现了两小问题,我们先来看一下,修复前后两个版本的模型效果。version1: 0.8,version2: 0.98。

问题一:冻结 Bert 参数,词向量无法更新,导致Bert的优势发挥不出来

内容不可见,请联系管理员开通权限。

问题二:sigmoid 加在 linear 层,导致输出结果差异变小

内容不可见,请联系管理员开通权限。

同时呢,有同学反馈说,之前的几个项目课里面,测试的代码是怎么来的,这块没太讲清楚。所以接下来,我给大家演示一下,这个修改的过程。其实很简单,就是从训练的文件复制过来的,稍微修改一下就可以了。

代码示例

1、模型测试

内容不可见,请联系管理员开通权限。

过拟合问题

过拟合问题的常规解决方案,就是加Dropout,我做了如下修改:

内容不可见,请联系管理员开通权限。

加了之后的结果是,训练集准确率降低,但测试集的准确率也没有明显提升,所以 Dropout 的效果并不明显。

我猜测,问题可能出在数据集上,训练数据的句子太短,一个句子只有一个实体,强行拼凑是不得已的方案。实际项目中,用真实的数据,数据质量应该比这份数据集好。

另外,对于联合任务,准确率能达到0.7以上,就基本可以用于生产了,所以这个模型已达到可用程度。当然,大家如果有更好的方案,也麻烦跟我同步。

本文链接:http://ichenhua.cn/edu/note/500

版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!