2018年这趟AI列车,提速比我预想的还猛。年初我还在纠结LSTM要不要换双向,年末BERT已经在一堆NLP任务上碾压了此前所有排行榜;年初觉得GAN生成的图片总要眯着眼睛辨认细节,年末看到StyleGAN生成的人脸几乎找不出破绽;年初觉得AI打赢Dota2职业选手怎么也得再等几年,年中OpenAI Five已经真刀真枪在赛场上按着人类打。这三件事表面上是NLP、计算机视觉、强化学习三个方向各玩各的,实际上全都踩在同一根主线上:更大规模的数据、更大规模的模型、更充分的算力压在同一个“深度学习”底座上。
这篇总结把我这一年看到的技术脉络、踩过的坑、以及周边圈子反复讨论的2019年趋势整理出来。内容按NLP、CV、RL三条线展开,最后给一份可直接抄的入坑路线和问题排查清单。它写给三类人:准备系统性入行的新人、正在做2019年技术选型的工程师、以及年底需要写技术总结但不知道从哪下笔的朋友。看不懂细节没关系,先把“2018年到底发生了什么、为什么是这些事”搞明白,这比背几个算法名词值钱得多。
1. 2018年AI/ML全景:三条线收束到同一根主线
1.1 从三个标志性事件说起
NLP这边最炸的无疑是BERT。2018年10月Google公开论文和开源模型之后,GLUE这个综合评测榜立刻被洗牌,很多任务直接提升好几个点,NLP从业者几乎是一夜之间把手里的Word2Vec、LSTM方案扔进了回收站。CV这边最热闹的是GAN家族,BigGAN在高分辨率图像生成上做到当时的顶尖水平,StyleGAN更是把“生成人脸”推进到真假难辨的境地。强化学习这边,OpenAI Five在Dota2 5v5比赛里击败职业选手,AlphaZero的完整论文又在年底登上Science,把自我对弈的框架从国际象棋、围棋扩展到将棋。
这三个方向的爆发节点分散在一年里,但内在节奏是一致的:深度学习在前几年已经把图像、语音、文本的基础表示学出来了,2018年正好到了规模化复利的临界点。很多以前靠手工特征、专家规则的地方,开始被端到端的模型成片替换。这一年里你如果只跟风学了一两个模型的API,而不去理解背后的数据与规模逻辑,年末复盘时很容易产生“什么都在变,好像又什么都没抓住”的错觉。
1.2 三个方向共同的底层逻辑
把NLP、CV、RL放在一起看,2018年的主线其实就三句话。第一,数据和模型规模是最大的杠杆。BERT用3亿参数在海量语料上做预训练,GAN不断加大网络容量和batch size,强化学习也靠大规模分布式采样把训练吞吐量推上去。没有算力和数据,算法技巧都是空谈。第二,端到端成为默认选择。以前NLP要分词、词性标注、句法分析一路手工设计流程,CV要手工设计特征描述子,RL则依赖手工状态抽象;2018年的主流范式是输入原始数据,网络直接输出预测或动作。第三,自监督信号开始帮你绕开“人工标注”这个瓶颈。NLP有了Masked Language Model,CV在探索利用图像自身的时空连续性做预训练,RL干脆靠环境交互自己产生训练信号。后面2019年发生的事,几乎全是这三条逻辑的延伸。
1.3 先分清概念:AI、ML、DL,以及CV/NLP/RL各自解决什么
热词里常年有人搜“计算机视觉和机器学习区别”,这里顺手说清楚。AI是个大筐,ML是从数据中学习规律的子集,DL是用多层神经网络做ML的子集。NLP和CV是“研究对象”维度上的划分,一个处理文本,一个处理图像/视频;RL则是“学习范式”维度上的划分,解决的是“怎么做决策”的问题。也就是说,CV和NLP通常用ML/DL作为主要手段,RL也可以用神经网络做函数近似,但不强制依赖深度学习。搞清楚这个关系,你在网上搜资料时就不会被“ML入门”和“CV大作业”这类关键词带偏,也能明白为什么2018年的热点严格说应该叫“深度学习 + NLP/CV/RL”,大家只是习惯统一缩写为AI/ML。
2. NLP:预训练语言模型这一年如何改写规则
2.1 2018年NLP时间线:ELMo、GPT、BERT
2018年的NLP可以按三个节点划分。年初ELMo先打了个样,用双向LSTM给每个词根据上下文动态生成向量,在一词多义上比静态的Word2Vec好太多。年中OpenAI发表GPT,用Transformer做单向语言模型预训练,把“预训练-微调”范式正式带火,当时很多人的第一反应是“原来语言模型预训练可以这么强”。到了10月,BERT出现:用Transformer Encoder做双向建模,提出Masked Language Model(随机遮盖15%的词让模型猜)和Next Sentence Prediction(判断两句是否相邻)两个预训练任务,微调之后直接横扫GLUE榜。
回头看,这三步走的节奏很清晰:先是“词的表示要动态”,再是“模型要预训练”,最后是“双向信息要真正融合”。如果你2018年初还在用Word2Vec + 浅层模型的套路,到年底一定会有时代甩开的感觉。当时中文社区很快就有大量中文NLP入门博客跟进,把分词、词向量、BERT理解讲得很接地气,搜索“中文NLP入门博客”就能找到一批高质量内容,这些资料直到今天仍然是理解NLP主线的捷径。
2.2 BERT核心机制白话解读
BERT能刷榜,不是模型结构有多惊世骇俗,而是它把几件事做对了。第一,Transformer自带的自注意力让每个词能直接看到整句话的任意位置,比LSTM按顺序传递信息高效得多。第二,Masked Language Model强迫模型在遮盖词的位置融会两边上下文,既解决双向问题,又提供了大规模自监督训练信号。第三,预训练-微调流程让下游任务只用很少标注数据也能吃到海量语料的红利。
我用一个生活类比:BERT就像一位读过几十万本书的学生,你给他一段短文和一个问题,他做少量练习就能答得很好。“少量练习”对应到工程上,通常就是2-3个epoch的微调,加一个线性分类头或输出层。2018年下半年我在自己的文本分类项目里也换上过BERT,最直观的差异是:以前调半天特征工程,现在只要把输入拼成“[CLS]文本[SEP]”,取CLS向量接个softmax,效果直接往上走。当然代价是推理明显变慢,所以后来线上做了“粗排+精排”的两级方案,简单样本用快模型,难例再交给BERT。
2.3 NLP落地场景:新闻处理与在线问诊
热词里出现“nlp新闻处理”“nlp在线医生”,说明2018年NLP已经在垂直场景里被大量尝试。新闻处理的核心需求包括文本分类、关键词抽取、自动摘要和事件抽取。我当时参与过新闻舆情系统:先抓取文章,用jieba分词,再用浅层模型做初筛分类;后来替换成BERT做fine-tune,准确率明显上去,但速度也降下来,最后做成“粗分类模型排除明显样本,BERT处理难例”的两级结构。这个模式在工业界很常见,不是所有请求都要上大模型。
在线问诊方向,典型任务包括医疗问答和病历结构化。先建立科室、症状词典,再训练意图识别和实体抽取模型,用户描述“最近总是头晕,晚上睡不好”,系统要识别出“头晕”是症状、“睡眠障碍”是潜在意图,再匹配知识库给出建议。这类场景最大的坑是领域数据稀疏、新词口语化严重,BERT并不能自动解决“领域漂移”,词典和规则补刀依然是工程上离不开的组件。
2.4 2019年NLP趋势研判
站在2018年底看2019年,方向其实已经写在BERT点燃的导火索上。第一,模型会更大、预训练会更贵,世界范围内会出现更多“预训练+多任务微调”的变体,中文领域也会快速出现更多中文预训练模型。第二,因为大模型部署不动,模型蒸馏、剪枝、量化会跟着升温,这是工程侧的必然。第三,少样本/小样本学习会成为热点,很多企业只给几十条标注就想要可用模型,元学习和预训练模型的少样本迁移会很有话题度。第四,多语言、跨语言预训练模型会出现。总的来说,2019年的NLP不会是完全换范式的年份,而是预训练路线的军备竞赛加上规模落地的一年。
3. 计算机视觉:生成对抗网络的爆发与检测范式的松动
3.1 GAN原理与2018年的“以假乱真”时刻
“AI图片生成原理”在2018年被搜得非常多,核心答案就是GAN。GAN由生成器和判别器组成:生成器把随机噪声变成图片,判别器判断输入是真实图片还是假图。两者互相较劲,就像造假币的学徒和银行验钞员,一个越画越像,一个越验越尖,最终生成器在“骗过”判别器的过程中学会了真实分布。2018年的关键进展是把这件事做得足够精细:Progressive GAN从低分辨率逐步生成到高分辨率,BigGAN用超大batch和大网络把ImageNet条件生成图片质量大幅提升,StyleGAN则通过风格向量实现了粗细语义的解耦。
我的实际经验是,训GAN最难受的是平衡:判别器太强,生成器原地踏步;生成器太激进,图片直接崩坏。2018年大家常用的补救手段是调整学习率、给判别器加梯度惩罚,或者干脆换WGAN-GP。至于“生成人脸真假难辨”带来的风险,技术圈子也在同步研究鉴别模型,这个攻防博弈后来一直延续,属于CV技术演进的另一个侧面。
3.2 目标检测和分割:从两阶段到Anchor-free
目标检测在2018年的主旋律是速度与精度的军备竞赛。两阶段代表Faster R-CNN系列继续扛着精度大旗,一阶段的YOLOv3在4月发布后迅速成为工程界宠儿,速度和精度性价比高得出奇。各类级联、特征融合的检测变体也在多尺度上继续推进。更重要的是,Anchor-free的思路开始松动:CornerNet用关键点检测框角,给“检测不一定要预设锚点”开了头,这个思路后来演化为FCOS、CenterNet等一系列模型。分割方向,DeepLabV3+用空洞卷积加编码解码结构在多个数据集上表现突出,实例分割则基本被Mask R-CNN统治。
做CV工程的人,2018年应该都已经习惯一种流程:下载在COCO或ImageNet上预训练的模型,在自己的数据集上微调,而不是从零训练。这一点和NLP后来盛行的“预训练-微调”是同一种思想的平行演进。如果你正在做计算机视觉大作业,最靠谱的路径也是找预训练模型做迁移学习,别去想什么“自己从零造轮子”。
3.3 新手常问:学习CV先装PyCharm还是VSCode
这个热词看起来很琐碎,但反映了自学者的真实卡点。我的回答是:决定装哪个IDE的不是“学CV”,而是“你主要写什么语言”。2018年CV入门几乎都走Python路线,用PyTorch或TensorFlow,这种情况下PyCharm和VSCode都能用:VSCode轻快、免费、插件生态好,PyCharm调试顺手、开箱即用。如果你后面要跑C++部署,比如编译OpenCV或接入推理引擎,那Windows上还得额外准备Visual Studio——这里指的是完整的VS,不是VSCode。
我还想强调,IDE选型远不如环境配置重要。2018年我见过太多同学把时间耗在CUDA、cuDNN的版本大战上,真正该做的其实是把一条手写数字识别流水线跑通。MNIST for ML beginners就是最好的起点:用PyTorch跑一遍MNIST,理解卷积、全连接、损失函数和反向传播,比纠结编辑器重要十倍。学习路线上,我建议按“MNIST分类→CIFAR分类→检测→分割→生成”推进,每步跑通一个项目,比只刷网课有效。
3.4 2019年CV趋势研判
CV在2019年的几个方向,2018年底其实已经能看到苗头。首先,网络结构搜索(NAS)会把“调结构”这件事自动化,一段时间内会批量出现搜索出来的高效网络架构。其次,轻量网络竞争继续,移动端部署和模型量化会成为工程热门话题。第三,GAN会往视频生成、超分辨率、图像编辑方向渗透,可控生成会更被重视。另外,3D视觉、多视角几何结合深度学习的路线会保持热度,“几何偏置”在SLAM、三维重建中的重要性会被更多人提起,这也解释为什么2018年底已经开始有研究者讨论“把几何先验塞进CNN”的种种做法。
旅游行业这种偏场景的方向也在悄悄变化,智能导览、拍照识物、行程推荐背后基本是CV加推荐系统的组合。我自己预测,2019年的“最热CV论文”会集中在少样本生成、可控图像编辑和自动驾驶感知上。想入门CV的读者,建议2019年至少把分类、检测、分割、生成四件事各跑一个项目,再盯紧Anchor-free检测的发展,这个积累比追一两篇话题论文更稳。
4. 强化学习:从游戏AI走向真实决策
4.1 2018年RL的三个标志性突破
RL在2018年的高光时刻,第一个是OpenAI Five在Dota2赛场上5v5战胜职业选手,系统通过大量并行采样在模拟环境里自我对弈,用PPO算法的变体不断优化策略。第二个是AlphaZero论文年底登上Science,它把自我对弈推广到将棋,且不需要人类棋谱,进一步证明了“经验回放+蒙特卡洛树搜索+深度网络”这个组合的通用性。第三个是机器人学习方向的进展,机械臂抓取、工业操作任务里,摩擦建模、接触力感知这类工程问题开始被严肃对待。
这三个方向跨度很大,实际指向同一件事:给算法一个正确的奖励函数和环境交互接口,模型就能在可接受的时间预算里学到让人刮目相看的策略。代价也很大,OpenAI Five的训练消耗了大量计算资源,AlphaZero同样依赖大规模异步对弈。RL在2018年的真实状态是“实验室里什么都能赢,真实工厂里什么都难落地”。研究者开始频繁讨论sim-to-real,因为仿真里顺风顺水的策略,一上真机就露怯。
4.2 深度强化学习的数学底盘与关键算法
热词里有“强化学习的数学原理”和“强化学习q算法 图片”,这里尽量讲成人话。RL的标准框架是马尔可夫决策过程(MDP):状态S、动作A、转移概率P、奖励R、折扣因子γ。目标是学一个策略π,让累积折扣奖励的期望最大。Q-learning的核心是估计“在状态s执行动作a,之后按最优策略走”的期望回报Q(s,a),更新公式是:
[ Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_{a'} Q(s',a') - Q(s,a)] ]
把公式画成图,就是网上常看到的那张“Q表更新示意图”:智能体处于状态s,做动作a,环境回馈奖励r并跳到s′,然后查表取s′下的最大Q值来更新原来的估计。DQN用神经网络表示Q函数,并引入经验回放池和固定目标网络两个技巧来稳定训练。2018年主流已经不是单纯的DQN,而是以PPO、TD3、SAC为代表的Actor-Critic和off-policy算法。PPO是OpenAI Five的选择,实现相对简单且鲁棒;TD3和SAC在连续控制上专门处理过估计偏差和探索问题。
我的经验是,RL实验最大的坑不是公式推导,而是复现结果极其痛苦:同一个算法换一个随机种子,训练曲线能差半个身位。所以在对比实验里必须多次跑种子,用均值加置信区间说话,而不是拿某一次幸运run去宣传效果。
4.3 入门实操:从课程、代码到置信区间曲线
2018年被最多人推荐的RL入门路线,第一站是David Silver在UCL的强化学习课程。它把MDP、贝尔曼方程、蒙特卡洛方法、时序差分、策略梯度讲得成体系,配着视频和讲义看,效率最高。知乎上关于强化学习入门的精华帖也很多,先看两三篇高质量回答,再决定用哪份代码库,能少走很多弯路。
第二站是把基础代码跑通,DQN、DDPG、PPO各写一遍或者复现经典实现。用OpenAI Gym练手即可,不要一上来就上多智能体。第三站是做自己的实验,这时候必然遇到“怎么把学习曲线画得能看”的问题。热词里那个“origin画强化学习置信区间曲线”我印象很深,因为这是每个学术绘图需求背后的痛点。标准流程如下:
- 固定超参数,用N个随机种子跑N次训练(N通常取5到10)。
- 训练过程中每隔固定步数记录一次累积奖励。
- 对每个时间步计算均值μ和标准差σ。
- 用μ画中心曲线,用μ±σ画上下边界,再填充成半透明置信带。
在Origin里就是先画均值曲线,再添加两条边界曲线,设置两条边界之间的fill属性。用Python更简单,seaborn的lineplot可以直接指定多次实验数据的errorbar参数:
import seaborn as sns import matplotlib.pyplot as plt # data形状为 (N_trials, T),每行是一次种子的奖励序列 sns.lineplot(data=data.T, errorbar="sd") plt.show()特别提醒:不要只跑一个种子就在报告里下结论,审稿人和同行一定会问variance在哪里。这条习惯不仅适用于RL,也适用于任何需要对比的深度学习实验。
4.4 2019年RL趋势研判
站在2018年底看RL的2019年,我个人判断会有几个热点。第一,基于模型的强化学习会重新被重视,因为真实环境采样太贵,学会环境模型就能大幅减少与环境的交互成本。第二,离线强化学习会成为研究焦点,也就是只用固定数据集训练策略,不再实时跟环境交互,这和机器人、推荐系统、医疗决策场景完美匹配。第三,多智能体强化学习(AI Agent方向)会继续升温,自动驾驶车群、电网调度、游戏AI都需要多智能体博弈。第四,Sim-to-Real迁移会从学术黑话变成工程刚需,机器人上那些摩擦、延迟、传感器噪声,必须靠域随机化和系统辨识才能解决。机械臂强化学习实战里,摩擦建模是最容易被忽视的一环,仿真里摩擦系数设得太理想,换到真机就抖动或打滑。
从学术规范的角度,2019年之后的RL论文会越来越习惯用多次随机种子的分布图而不是单条曲线。这条变化在2018年底已经有明显倾向,提前养成习惯能在读论文时更快判断结论是否可靠。
5. 进入AI领域的实用路线与避坑实录
5.1 一份可参考的2019年学习路线
如果2019年才准备进入AI领域,建议按这条路线走,避免东一榔头西一棒子。
第一阶段补数学:线性代数、概率统计、微积分。不用钻研到数学系深度,够看懂梯度、矩阵乘法、贝叶斯公式即可。第二阶段学机器学习基础:线性回归、逻辑回归、决策树、SVM、聚类,配合sklearn跑一遍,然后用MNIST把“模型训练-验证-测试”完整流程走一遍。第三阶段学深度学习入门:神经网络、反向传播、CNN、RNN的核心结构,在PyTorch里自己实现一次手写数字分类和文本情感二分类。第四阶段再分方向:NLP方向学Transformer和预训练模型,CV方向跑分类、检测、分割、生成各一个项目,RL方向跟David Silver课程并实现一个DQN。
这条路线最大的价值是“先有宽度,再有深度”。我见过很多人一上来就死磕GAN或强化学习理论,结果连梯度下降都讲不清,回头补基础的成本反而更高。2026年回看,这条路线依然不算过时,只是工具版本变了。
5.2 环境与工具选型:IDE、框架与GPU
环境配置这块,2018年底框架生态正在变天:TensorFlow 1.x还是生产环境大户,但调试起来着实反人类;PyTorch 1.0在12月亮相,动态图、Pythonic、debug方便,学术界迅速转向,到2019年很多新论文都会默认PyTorch。给2019年初入坑者的建议是:主力学PyTorch,同时能读懂TensorFlow的inference代码就够用。
GPU能租就租,不用一开始就买顶配。云GPU按时计费,跑MNIST和小型分类任务完全够。IDE前面说过,PyCharm或VSCode选一个,关键是把Python环境和虚拟环境管理好,不要一个电脑上装三套Python互相污染。我踩过一个真实的坑:在TensorFlow 1.x时代,conda环境里混装CPU版和GPU版,训练时模型默默跑在CPU上,两小时白等。后来学会用tf.test.is_gpu_available()和PyTorch的torch.cuda.is_available()做启动自检。新手务必养成“先验证环境,再跑训练”的习惯。
5.3 AI辅助开发与专利检索的实用玩法
2018年底的热词里出现“ai测试开发”“专利相关链接(ai辅助)”,说明AI辅助工具已经开始渗透研发流程。测试领域,AI可以用来生成测试用例、根据历史缺陷数据预测高风险模块、自动分类和定位线上报障。专利检索上,AI辅助工具能基于语义快速搜索相似专利,帮助工程师做技术调研和新颖性判断。我试用过一些检索工具,确实比纯关键词查要快:用自然语言描述一个技术方案,就能返回一组相似专利。但这种工具只能辅助缩小范围,最终判断仍然要人工逐篇阅读比对。
AI编程辅助也开始流行,写提示词本身慢慢变成一门技能。做AI方向的研发,如果公司有专利要求,写技术交底书时要把模型结构、训练方法、实际效果写清楚,再用AI搜索做在先技术调研,能省下大量重复检索时间。这类“用AI辅助做事”的趋势在2019年只会更普遍,大家不必把AI限定在模型算法本身,它更是一种工作效率工具。
6. 常见问题排查与实操心得
6.1 NLP方向常见问题
NLP项目里遇到最多的问题,我整理成一张速查表:
| 问题 | 现象 | 常用解法 |
|---|---|---|
| 小数据微调过拟合 | 训练loss很低,验证集不涨 | 降低学习率、减少epoch、early stopping、用BASE版本模型 |
| 长文本超限 | BERT上限512token塞不进 | 截断、滑窗切段、分层编码后再聚合 |
| 类别不平衡 | 少数类几乎不被预测 | 重采样、focal loss、阈值调整 |
| 领域新词 | 预期实体识别不出 | 外部词典、规则匹配、构造领域预训练语料 |
我自己的经验是:先跑一个简单的TF-IDF加线性模型做baseline,再上BERT。这样你清楚知道深度模型到底提升了多少,线上出问题时也方便快速降级。很多项目最后跑不动大模型,并不是模型不行,而是你连baseline都没验证过。
6.2 CV方向常见问题
CV方向新手最容易踩的坑,第一是数据集太小导致过拟合。解决办法不是乱改网络结构,而是用预训练模型做迁移学习。第二是训练GAN不收敛,典型表现是判别器loss迅速降为零或图像剧烈震荡。除了调整学习率和网络容量,梯度惩罚、谱归一化、减小batch size都是可选项,实在不行换WGAN-GP。第三是类别不平衡和检测小目标漏检,通常先做多尺度训练,再调整anchor配置和数据增强。第四是环境问题,CUDA和cuDNN不匹配能浪费一整天,建议把依赖版本固定成一份requirements加conda环境记录。
给新手的实操建议:每个数据集先做可视化,把标注框、预测框叠在原图上,确认数据没读错。这个问题看起来低级,但实际比网络设计问题更隐蔽也更常见。我一度因为标签索引偏移,模型精度卡在70%怎么都上不去,最后发现是可视化时才发现类别标号错了一个offset。
6.3 RL方向常见问题
RL方向的问题清单也比较固定。第一,训练不稳定。解决办法包括梯度裁剪、reward归一化、降低学习率、固定熵系数等,但最根本的还是“多次随机种子看曲线分布”。第二,探索不足。连续动作空间里模型容易陷入局部最优,可以用熵正则、OU噪声或SAC自带的最大熵机制。第三,奖励稀疏。很多机械臂任务里只有最后一步才给奖励,模型学不到,需要拆解中间奖励或布置课程学习。第四,机器人强化学习的摩擦问题。真实机器人sim-to-real里最容易被忽略的就是摩擦建模,仿真里面摩擦系数设得太理想,真机上就容易抖或打滑,常用补救是把摩擦系数、时延、负载都加随机化。
我还有一个习惯:记录训练曲线时把Episode Length和平均奖励一起记。很多问题单看奖励看不出来,比如奖励涨但步数变长,说明策略在“贪快报”。把两条曲线放在一起看,定位问题快得多。
最后分享一个我2018年留下的习惯:每个月月底抽出半天时间,把当月追过的新模型、新论文、踩过的坑整理成一份清单,只记录“它解决了什么问题、我该不该跟进、如果跟进第一步做什么”。一年下来,这份清单成了我理解技术脉络最值钱的资料。2019年的趋势判断未必全对,但这个整理习惯值得带走。