修改:

又过去一年,自己对这个问题有了新看法,更新一波吹水,专业玩家笑笑就好。

最近几年发展很快,ai大有全面打倒工人的势头,而且开创了很多人机组队的神奇新高度,比如ai国际象棋赢了以后,那个下棋的大师开创了一门高等国际象棋,ai给人计算所有的可能性收益,人来根据这个信息做决策。人机联手的结果目前是最强的,比纯人纯机都有更高胜率。当然在不同任务中,人机的联合方式肯定会非常不同。

如果你关注ai,肯定看过很多而且越来越多成功的例子,具体到nlp而言,nlp是一个很老的领域,有若干种具体问题可以通过机器学习方法来解决。但是语言一种奇特的东西,它是人类先进性的体现,因此可能是所有ai面临挑战中,最复杂最深刻的一种。所以nlp的发展是逐步前进的,你今天看到的对话ai,绝不是1年以后的对话ai,但是有可能十年以后它都不能100%像人一样对话。语言博大精深,语言包含了人类的一切数学,语言还可以做艺术创造,最终也许ai在nlp领域也就是一个人机联合的结果。

关于编程语言的作用,目前nlp的顶级模型主要来自科研领域,大部分是python下tensorflow或者torch,caffe之类的框架作为支撑的。但是在生产领域,用c++转化显然有更好的运行效率。但是研究发展很快,新模型不仅可以做更多任务,而且以往的任务也做的更快更专业,新东西拿来c++转化的成本和收益比是一个问题。所以具体到一个nlp问题,转化一定是优先选择性价比好并且技术方案稳定的部分进行的,各大公司也基本都有自己研发或者部分研发的计算框架,性能提升的手段不只是c++。但是和选择语言一样,都有开发效率的问题,追求跑得快就损失灵活性,不容易让新算法落地。所以算法人才(python等)和工程人才(c++,并行gpu,产品化等等)都长期需要,而且必须密切合作。

但是,无论做哪种,ai领域比较不赞赏“把这个事情做100次”“照着这个例子写”“做完这个月的份”这种重复性角色,因为这都是ai能做的事,即使今天需要人,明天也许就不要了,地位会越来越低。但是这种人是社会的绝大多数,因此急需的其实是踏踏实实做一个任务的优化,每天都想着去创新,挑战昨天的记录,善于分析现有的不足,发现别人忽略的细节等等。。。这种习惯,或者说拥有注入灵魂能力的人类。如果需要解决的问题是超越你熟悉的语言的,也可能需要自己去学习克服。

这么说可能太理想化了,但是无论公司大小,选人的过程都是大浪淘沙,不断留下手里最好的,特别是发展迅速的领域,如果不能靠经验积累站住脚,就必须做好准备重新竞争。比如今年谷歌的bert模型,在11项任务中破记录,所有人都从地上爬起来(被这个结果吓到地上去的)大喊,我的神功全废了!以前做的工作,改进的模型,都成弟弟了,因为新模型起点就很高,要赶紧研究改进新模型去了。这种刷榜对吃这碗饭的人是很残酷的,所以一定要做第一名,也是ai唯一的名次。

还有冷不丁杀出来的工程师,比如fair这种,把常用的最新研究成果做成一个库,只需要不到5行代码就调用了,还免费放出来git,你说让不让人专心工作?让不让人努力改自己昨天写的bug?当然,如果你用心了,你注魂了,肯定会看到他的不足和问题。而如果你不努力,魂力大于等于你的人迟早把fair改进成魂力超过你的状态,然后免费放上git,对,就是不让人放心。

所以想入行,首先必须有热情,热爱这个任务,不能朝三顾四,其次是能从概率模型的角度认识任务的数据内在联系,再次是熟悉各种手段的能力范围,计算效率,就像蜘蛛侠,爱正义,懂犯罪套路,擅长用蛛丝战斗,才敢在纽约街头混口饭吃。当然还有一点非常重要,多结识几个复仇联盟里的大佬,没事就一起混经验值,比自己刷怪快多了。

说了半天有点跑题了,具体学习资料的推荐,建议找经典的神经网络教程,一个一个模型吃透它。做ai的人很多都不是计算机出身,所以编程语言随用随学,主要精力啃统计、线代、参数估计等等数学模型,然后啃各种神经网络,然后它们的变种和组合网络。。。如果你经常发现自己正在啃的还没弄懂,新的改进型就出来一大片了,恭喜你入门了,而且接触前沿了。

建议找几个经常发动态的公众号,靠谱的讲论文的那种,不要找吹牛的那种(比如我),看不懂硬看,当成早饭吃,别花太多时间但是要了解全局了解最新动态。基础一定要打好,最简单的学习的原理、经典网络结构要写代码玩明白,调别人的api是学不会的。找到综述就看看,或者B站现在也有中文的交流视频了,一直觉得中国人说话一竿子到底直接讲最难的非常有效率,外国人就喜欢陪着你过家家一个学期的课上完了最难的没讲。所以外国人基础很好,中国人刷分很积极。。

nlp这个事说难不难,但是特别复杂深邃。简单的一些任务现在都成api了不需要什么算法研究员,写网页的写java的顺手调一个也能干活。但是语言模型可以用来解释很多人类文明中的现象和事物之间的联系,比如目标识别人脸识别看起来很复杂其实只是做了最简单的第一层任务标签化,需要进一步推理标签后面的线索,比如这个人究竟是不是女装大佬,用得上的还是nlp里的文本分类。语言可以传授知识,说明语言就是液体的大脑,当一个人用语言描述了他脑子里的全部知识就等于得到了他大脑的某种文字形式的复制品。我们学的所有数学理论比如交换律,微积分在平时说话措辞里都有运用。所以这个领域还有很大的局限性,现在的深度神经网络为主的手段只是一种,就像只有一种类型的原子:碳,你可以做很多碳基物质,但是凑不出元素周期表。