这个是一个很好的问题,尤其对于绝大多数刚刚在公司里开始从事NLP相关项目的人来说。
首先希望明确的一点是,在整个NLP项目任务里,模型的设计和训练其实是最简单的一环,这里说的简单并不一定是指问题简单,而是说,它在整个的工作开销的占比很小,需要花费的心力也相对较少。原因主要有两点:第一,实际业务端的需求能够走到模型设计这一步的时候,必然是经典任务可以描述的业务,反之,非常复杂的业务不会放心交给机器自动去做的;第二,在这个前提下,模型的选取和训练对于科班出身的人来说都是比较简单的。
那么真正的挑战在什么地方呢?恰恰就在大家最喜欢的模型的前和后两个阶段,这里面我认为前面的阶段是最有挑战的。从项目的一开始,我们要面对的就是对于任务需求的准确理解,这里的准确理解并不是单向的,因为在很多时候会有这样的情况出现:你觉得你理解了pm的意思,但是仔细聊起来发现TA并不是这个意思,同时pm以为自己理解了你说的方法,但是仔细聊起来你发现TA的理解并不对,更有甚者,就连提出需求的人自己都没想清楚自己想要做什么,这种情况其实是极为普遍的。所以,你要做的是不厌其烦的讨论和对齐,告诉TA们技术能做到什么不能做到什么,大家一起确定最终的目标。
在这之后,你就会遇到另外一个神奇的问题,通常你会问:那咱们有数据吧?我要训练一个XXX模型,然后你大概率的会得到这样一个回答:对不起我们没有数据。然后问题就变成,得了,你上哪儿自己倒腾数据去?甚至于,这个任务并不能找到直接可用的标注数据,这时候你是花时间去标注?还是用什么其他方法获取数据?
经历了前面的过程,相信到时候大家就觉得设计和训练模型是个简单活儿了。
在模型之后的过程里,上线部署是一个关键的问题。大家可以放心,很多情况下Deep Learning这种高大上(?)的模型都不太能直接满足线上部署的要求,所以这里再次证明了模型选取的时候一定要在满足需要的情况下尽可能简单,做项目和做研究完全不同,拿做研究的心态做项目会吃亏,反之也是如此。
以上。
暂无评论内容