线下班开课第三周,林晨亲自讲了一堂课。
不是开学典礼那种讲话,是真正的技术课——机器学习项目实战:从数据到模型。这门课本该由赵峰讲,但林晨把它拿过来了。不是不信任赵峰,是他想亲自看看这三百个学员。站在讲台上看,和坐在监控室里看,看到的东西不一样。
他站在第一教室的讲台上——第一教室是最大的教室,能坐八十个人。但今天六间教室的学员都来了,三百个人挤在一间教室里,坐的坐、站的站、蹲的蹲。走廊里也站了人,透过窗户往里看。小宇在最后一排架了一台摄像机——林晨的课要录下来,给以后的新学员看。
今天讲一个真实的项目。林晨打开笔记本电脑,投屏到电子屏幕上。不是mNISt手写数字识别,不是泰坦尼克号生存预测,不是网上烂大街的教学案例。是我自己做的项目——晨枫餐饮的日销售额预测模型。
屏幕上出现了一张表格——过去一年,六家店每天的销售额、天气、温度、节假日、周边活动。两万多条数据,每一条都是真实的。
这个模型现在在线上跑。每天早上六点,它自动预测六家店今天的销售额,误差在百分之八以内。中央厨房根据预测结果备料——预测卖多少份回锅肉,就备多少份五花肉。预测卖多少份酸菜鱼,就备多少条黑鱼。这个模型帮晨枫把食材损耗率从百分之五降到了百分之二。一年省十几万。
台下有人在记笔记。
今天,我带你们把这个模型从头做一遍。从数据清洗到特征工程,从模型选择到评估优化,从部署上线到监控维护。每一步我都会讲——不是讲理论,是讲我怎么做的,为什么这么做,踩过什么坑,怎么爬出来的。
他打开Jupyter Notebook,开始写代码。
第一步,数据清洗。真实数据永远是脏的——有缺失值、有异常值、有格式错误。比如这条数据——他指着一行。销售额是负的。不是系统出错了,是那天有一笔退款。如果不处理,模型会被这个负数带偏。
他写了几行代码,把异常值过滤掉。
第二步,特征工程。原始数据不能直接喂给模型。需要从原始数据里提取特征——星期几、是不是节假日、温度是多少、下不下雨。这些特征比原始数据更能帮模型找到规律。
他写了一个特征提取函数,把日期转换成了星期几是否节假日,把天气转换成了温度区间是否下雨。
第三步,模型选择。不是选最复杂的模型,是选最合适的模型。这个场景的特征不多——十几个特征,两万条数据。用xGboost就够了。不需要深度学习。深度学习是屠龙刀,但杀鸡用菜刀就行。
他写了几行代码,用xGboost训练了一个回归模型。训练过程只用了三秒钟。
第四步,评估。模型训练完了,怎么知道它好不好?不是看它在训练集上的表现——训练集上表现好是应该的。要看它在测试集上的表现——测试集是模型没见过的数据。在没见过数据上表现好,才是真的好。
他把测试集喂给模型,算出了平均绝对误差——百分之七点八。
百分之七点八。意味着模型预测今天卖一万块,实际大概在九千二到一万零八百之间。这个精度够用了——中央厨房备料的时候会留百分之十的余量。
他停了一下,转过身,看着台下的学员。
有人可能会想——这个模型看起来也不难啊,几行代码就搞定了。对,不难。但难的不是代码,是前面的东西——数据怎么收集、特征怎么设计、模型怎么评估、结果怎么用。代码只是最后一步。前面的每一步,都需要理解业务。
他点了一下鼠标,屏幕上出现了这个项目的Github仓库——三百多个mit,从第一个版本到最新版本,跨度一年半。
这是我一年半里做的所有改进。第一个版本只用了一个特征——历史销售额的移动平均。误差百分之十五。第二个版本加了天气特征,误差降到百分之十二。第三个版本加了节假日特征,误差降到百分之十。第四个版本换了模型——从线性回归换成xGboost,误差降到百分之八。每一个版本都是一个小改进,合在一起就是一个好模型。
他关掉Jupyter Notebook,看着台下的学员。
我想告诉你们的是——AI不是魔法。不是你把数据丢进去,模型自己就能学会。AI是手艺。是反复打磨、不断改进、一点一点优化的手艺。你们在这里学四个月,学的不是怎么调用一个模型——调模型谁都会。学的是怎么把一个模型从百分之十五优化到百分之八。这种能力,才是你们面试时最大的底气。
台下响起了掌声。
下课后,一个学员在走廊里拦住了林晨。
林晨记得他——他叫老马,四十三岁,之前在东莞一家电子厂做仓库管理员。他的课桌上贴着那张目标卡——我不认命。
林老师。老马的声音有点急。你刚才讲的那个销售额预测模型——我有个想法。
什么想法?
我在仓库做了十年。仓库里最大的问题是库存——有些货堆了半年卖不出去,有些货三天就卖完了来不及补。老板每次订货都是凭经验——觉得什么好卖就多订,觉得什么不好卖就少订。结果就是——好卖的断货,不好卖的积压。
你想说什么?
我想说——你那个模型,能不能用在仓库管理上?不是预测销售额,是预测库存需求。根据过去的出库数据,预测未来一个月每种货需要多少。这样老板订货的时候就有依据了——不是凭经验,是凭数据。
林晨看着老马。老马说不是凭经验,是凭数据的时候,眼睛是亮的。他不是在问一个技术问题,他是在想怎么用AI解决他做了十年的仓库管理问题。他做了十年仓管,他知道仓库里最大的痛点是什么。现在他学了AI,他开始想——能不能用AI解决这个痛点。
林晨说,而且比你想象的简单。销售额预测和库存需求预测,本质上是同一个问题——根据历史数据预测未来。你把销售额出库量天气季节节假日促销活动。模型不用变,变的是数据。
老马愣了一下。这么简单?
思路简单。但做起来不简单——数据要收集、特征要设计、模型要调优。但思路是对的。你回去之后,可以试着做一个demo——用你以前在仓库里的数据,训练一个库存需求预测模型。做出来了,我帮你看。
老马点了一下头。他转身要走,又停住了。
林老师。
我四十三岁了。学了三个星期的python,连面向对象都还没搞明白。你觉得我能做出来吗?
林晨看着老马。老马的脸上有很深的皱纹——不是年纪大了才有的,是在仓库里搬了十年货搬出来的。他的手很粗糙——手指上有搬货磨出来的茧,指甲缝里有洗不掉的油污。他四十三岁,做了十年仓管,被裁了,来学AI。他连面向对象都还没搞明白,但他已经在想怎么用AI解决仓库管理的问题了。
你能。林晨说,因为你有一个别人没有的东西——你懂业务。你做了十年仓管,你知道仓库里最大的痛点是什么。AI工程师可以帮你写代码,但他们不知道仓库里有什么痛点。你知道。这就是你的优势。
老马沉默了几秒。然后他点了一下头,转身走了。他的背影在走廊里越来越小,但他的脚步很稳——不是那种我一定要成功的稳,是那种我知道我要做什么的稳。
第四周,林晨又讲了一堂课——大模型应用实战。
这门课本该由吴敏讲,但林晨把它拿过来了。不是不信任吴敏——吴敏的NLp课讲得非常好。是大模型这个方向太新了,新到每个月都有新的突破。林晨想亲自讲——因为他自己也在学,在用的过程中学。他想把最新的东西教给学员,而不是教三个月前的东西。
今天讲大模型。林晨站在讲台上。大模型是2023年之后AI领域最大的变革。chatGpt、文心一言、通义千问——这些你们应该都听过。但今天不讲怎么用大模型——怎么用chatGpt写文案,怎么用文心一言写代码。那些你们自己就会。今天讲怎么训练大模型——怎么在垂直领域做微调。
他在电子屏幕上打开了一个colab笔记本。
我们以金融领域为例。假设你有一家证券公司,每天要分析几百份研报。研报很长——一份研报几十页,分析师看完要半小时。能不能用大模型自动分析研报?能。但通用大模型不懂金融术语——它不知道mAcd金叉是什么意思,不知道头肩顶是什么形态。所以需要微调——用金融领域的数据,在通用大模型的基础上做二次训练。
他打开了一个数据集——一万份金融研报,每份都标注了关键信息:公司名称、行业、评级、目标价、核心观点。
这个数据集是我自己做的。去年我用爬虫爬了公开的研报数据,然后让实习生标注。标了一万份,花了三个月。数据质量是微调的关键——垃圾数据训练出垃圾模型。
他开始写代码。用LLamA的开源权重做基座模型,用LoRA做高效微调——不需要训练整个模型,只需要训练一小部分参数。训练过程在云GpU上跑,大概需要两个小时。
训练需要两个小时。我们不等了——我直接给大家看训练好的模型。
他加载了微调好的模型,输入了一份研报的文本。模型在十秒钟内输出了分析结果——公司名称、行业、评级、目标价、核心观点。每一项都准确无误。
这个模型现在在晨枫的投资系统里跑。每天早上,它自动分析最新的研报,把关键信息提取出来,供投资决策参考。它不能替代分析师——但它能把分析师从读研报这件事里解放出来,让分析师去做更有价值的事。
台下有人举手。林老师,微调一个大模型需要多少成本?
看你微调多大的模型。LLamA-7b——七十亿参数——用LoRA微调,一块A100显卡,大概两百块钱的算力。如果是LLamA-70b——七百亿参数——需要八块A100,大概两千块钱。对于企业来说,这个成本可以忽略不计。
那为什么很多企业还没用上大模型?
因为不知道能用来做什么。林晨说,技术不是瓶颈,想象力才是。企业里有很多重复性的文字工作——写报告、回邮件、整理文档、分析数据。这些工作都可以用大模型辅助。但大部分企业不知道大模型能做什么,也不知道怎么把大模型集成到现有的业务流程里。这就是你们的机会——你们学完之后,不是去找AI岗位,是去帮企业用AI。你们是桥梁。
第六周的时候,出了一个问题。
一个叫小彭的学员想退学。小彭二十六岁,之前在广州一家游戏公司做测试,月薪六千。他学AI是想转行做算法工程师。但他在第六周的机器学习阶段遇到了瓶颈——逻辑回归的代价函数他看了三遍没看懂,SVm的核函数他看了五遍还是懵的。他觉得自己学不会了。
张老师发现了他的异常——小彭连续两天没交作业,上课的时候坐在最后一排,低着头,不看屏幕。张老师把他叫到了办公室。
小彭,你最近怎么了?
张老师,我想退学。
为什么?
学不会。小彭低着头。逻辑回归、SVm、决策树——这些东西我看了好多遍,还是不懂。我是不是太笨了?
张老师没有回答。她从抽屉里拿出一张卡片——是小彭入学那天写的目标卡。卡片上写着:四个月后,我要拿到一份月薪一万的AI岗位offer。我想让我妈不用再去工厂上班了。
她把卡片放在小彭面前。
这是你写的。
小彭看着卡片,没有说话。
你妈在工厂做什么?
做玩具。计件的。做一个玩具赚两毛钱。一天做五百个,赚一百块。
你学AI,是为了让她不用再做玩具了?
小彭点了一下头。他的眼眶红了。
那你不能退学。张老师说,学不会没关系。别人看三遍,你看十遍。别人学一周,你学两周。逻辑回归的代价函数——你看不懂,不是因为你笨,是因为讲的方式不适合你。我让赵峰老师用另一种方式给你讲——不用公式,用图形。你看了图形,可能就懂了。
小彭抬起头。用图形能讲懂吗?
张老师说,赵峰老师讲过——逻辑回归的代价函数,本质上就是预测值和真实值之间的差距。用图形表示——就是两条曲线之间的面积。你不需要懂公式,你只需要懂模型在努力让两条曲线重合。这就够了。
小彭沉默了几秒。那我再试试。
不是试试。张老师说,是坚持。你妈在工厂里做玩具,一天做五百个,做了一个月、一年、十年。她没有放弃。你也不能放弃。
小彭点了一下头。他拿起目标卡,看了很久。然后他站起来,走出办公室,走向教室。他的背影有点瘦,但他的脚步很稳——不是那种我一定能学会的稳,是那种我不能放弃的稳。
四个月后,第一期线下班结业。
三百个学员,两百七十八个人坚持到了最后。退出了二十二个——不是因为学不会,是因为各种原因:家里有事、身体扛不住、找到了其他方向。两百七十八个人里,有两百二十个人在结业后三个月内找到了AI相关的工作。就业率百分之七十九。
老马是其中之一。他没有做算法工程师——他的编程基础确实不够。但他找到了一份AI产品经理的工作,月薪一万二。比他在仓库做仓管的时候多了四千块。面试的时候,面试官问他:你是仓管背景,为什么觉得自己能做AI产品经理?他说:因为我懂仓库。我知道仓库里最大的痛点是什么。AI产品经理的职责是找到痛点,用AI解决。我做了十年仓管,我知道痛点在哪里。面试官被他说服了。
小彭也是其中之一。他拿到了一家游戏公司的AI测试工程师offer,月薪九千。比之前做游戏测试多了三千块。他在结业群里发了一段话:第六周的时候我想退学。张老师把我叫到办公室,给我看了我写的目标卡。我看了那张卡片,想起我妈在工厂里做玩具——做一个赚两毛钱。我没退。谢谢张老师。谢谢晨光。
林晨看到这段话的时候,正在中央厨房的办公室里。他把手机递给坐在对面的小宇。
你看看。
小宇看完,把手机还给林晨。大伯,你做的这件事——比我做的所有运营方案都重要。
你说过了。
我再说一遍。小宇说,因为你做的事,不是赚钱。是改变命运。
林晨看着窗外。窗外是龙岗工业区的铁皮厂房,午后的阳光照在铁皮上,反射出灰白色的光。他想起四年前,他坐在出租屋里,对着屏幕学pytorch。那时候他不知道这条路能走多远,不知道这个选择对不对,不知道自己能不能学会。他只知道——不能停。
四年后,他坐在自己的公司里,看着两百二十个人因为他做的一件事,找到了新的方向。
从一个人,到两百二十个人。从不能停不用停。