📚 AI专家养成计划 · 第11篇(共140篇)
⏱️ 阅读时间:10-15分钟
🎯 适合人群:零基础,想亲手感受”编程思维革命”的你
🌙 上篇回顾:今天早课我们学了什么
今天早课,我们用”大圈套小圈”的比喻彻底理清了AI、机器学习、深度学习的关系。来回顾3个核心要点:
1. AI ⊃ 机器学习 ⊃ 深度学习,是包含关系
人工智能是最大的圈,机器学习是”从数据中学习规则”的子集,深度学习是”用深层神经网络自动学特征”的更小子集。ChatGPT、Stable Diffusion都属于深度学习。
2. 深度学习的核心突破是”自动学习特征”
传统机器学习需要人告诉AI”看耳朵、看毛色”,深度学习自己从数据中学到要看什么。代价是需要更多数据和更强算力。
3. 深度学习不是万能的
数据少、需要可解释性、结构化数据的场景,传统机器学习仍然是更好的选择。选对工具比追求最新技术更重要。
💡 核心收获:今天早课你搞清了AI技术家族的”大圈套小圈”关系。今晚我们来亲手体验——传统编程和AI编程到底有什么本质区别。
🎯 今晚的主题:两种编程思维的碰撞
你可能写过代码,也可能没写过。
没关系。今晚我要用一个实际的例子,让你亲手感受到——
传统编程和AI编程,根本就是两种完全不同的思维方式。
打个比方:
传统编程 = 你亲手写菜谱,告诉厨师每一步怎么做
AI编程 = 你给厨师看100道好吃的菜,让他自己悟出菜谱
听起来很抽象?别急,我们马上动手。
🔧 第一步:安装今天的实验环境
我们需要Python和一个叫scikit-learn的库。如果你已经装了Python,直接运行:
`bash
# 安装必要的库
pip install scikit-learn numpy pandas matplotlib
`
如果你还没装Python,推荐用Google Colab(免费GPU,不需要安装任何东西):
- 打开 https://colab.research.google.com (⚠️ 需要科学上网)
- 点击”新建笔记本”
- 直接在代码单元格里写代码就行
💡 从今天开始,我们的实践课都会提供Colab链接,方便你直接运行。
📝 实验:识别垃圾邮件
假设你收到一封邮件,要判断它是不是垃圾邮件。
方式一:传统编程思维(手写规则)
传统程序员会怎么做?自己写规则!
`python
# 传统编程方式:手写规则判断垃圾邮件
def is_spam_traditional(email_text):
“””传统方式:人工定义规则”””
spam_keywords = [‘免费’, ‘中奖’, ‘点击领取’, ‘限时优惠’, ‘恭喜你’, ‘汇款’]
score = 0
# 规则1:包含垃圾关键词就扣分
for keyword in spam_keywords:
if keyword in email_text:
score += 1
# 规则2:感叹号太多就扣分
if email_text.count(‘!’) > 3 or email_text.count(‘!’) > 3:
score += 1
# 规则3:全是大写字母就扣分
if email_text.isupper():
score += 1
# 规则4:有链接就扣分(简化处理)
if ‘http’ in email_text.lower():
score += 1
# 得分>=2 就认为是垃圾邮件
return score >= 2
# 测试
emails = [
“亲爱的用户,恭喜你中奖100万!请点击链接领取 http://spam.com”,
“明天下午3点开会,请准时参加”,
“免费领取iPhone!限时优惠!!!”,
“项目报告已经发到你邮箱了,请查收”,
]
for email in emails:
result = “🚫 垃圾邮件” if is_spam_traditional(email) else “✅ 正常邮件”
print(f”{result}: {email[:30]}…”)
`
运行这段代码,你会看到:
`
🚫 垃圾邮件: 亲爱的用户,恭喜你中奖100万!请点…
✅ 正常邮件: 明天下午3点开会,请准时参加…
🚫 垃圾邮件: 免费领取iPhone!限时优惠!!!…
✅ 正常邮件: 项目报告已经发到你邮箱了,请查收…
`
看起来还行?但问题来了——
如果垃圾邮件换了花样呢?
`python
# 传统方式的”死穴”:没见过的套路就识别不了
new_spam = “亲爱的用户,您有一笔退款待处理,请登录账户确认”
print(is_spam_traditional(new_spam)) # 输出: False ❌ 漏掉了!
`
这就是传统编程的致命问题:你永远在追赶垃圾邮件的花样。对方每换一种写法,你就得更新规则。这是个永远打不赢的”猫鼠游戏”。
方式二:AI编程思维(让机器自己学)
AI程序员怎么做?不写规则,给数据!
`python
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np
# ============================================
# AI编程方式:不写规则,给数据让机器自己学
# ============================================
# 第一步:准备训练数据(标注好的邮件)
train_emails = [
# 垃圾邮件(标签=1)
“恭喜你中奖100万,点击领取”,
“免费领取iPhone,限时优惠”,
“汇款到以下账户,立刻到账”,
“你被选为幸运用户,大奖等你拿”,
“低价出售名牌手表,品质保证”,
“日赚万元,轻松躺赚”,
“贷款无需抵押,当天放款”,
“恭喜获得免费旅游名额”,
“特价清仓,错过再等一年”,
“快速减肥,7天见效”,
# 正常邮件(标签=0)
“明天下午3点开会,请准时参加”,
“项目报告已经发到你邮箱了”,
“周末一起去爬山怎么样”,
“请帮忙审核一下这份合同”,
“生日快乐!晚上一起吃饭”,
“明天的航班改到下午2点了”,
“图书馆借的书该还了”,
“新买的咖啡机到了,来试试”,
“季度总结会议安排在周五”,
“你推荐的那本书我看完了,很好看”,
]
# 1=垃圾邮件,0=正常邮件
train_labels = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 第二步:让机器”学习”(训练模型)
vectorizer = CountVectorizer()
X_train = vectorizer.fit_transform(train_emails)
model = MultinomialNB()
model.fit(X_train, train_labels)
# 第三步:用训练好的模型来预测
test_emails = [
“亲爱的用户,您有一笔退款待处理,请登录账户确认”, # 传统方式漏掉的
“明天下午3点开会,请准时参加”,
“恭喜你被选为VIP用户,专属优惠”,
“周末一起吃饭吧”,
]
X_test = vectorizer.transform(test_emails)
predictions = model.predict(X_test)
for email, pred in zip(test_emails, predictions):
result = “🚫 垃圾邮件” if pred == 1 else “✅ 正常邮件”
print(f”{result}: {email[:30]}…”)
`
运行结果:
`
🚫 垃圾邮件: 亲爱的用户,您有一笔退款待处理,请登… ← 传统方式漏掉的,AI抓住了!
✅ 正常邮件: 明天下午3点开会,请准时参加…
🚫 垃圾邮件: 恭喜你被选为VIP用户,专属优惠…
✅ 正常邮件: 周末一起吃饭吧…
`
看到区别了吗?
那封”退款待处理”的邮件,传统规则漏掉了,但AI抓住了。
因为AI不是靠关键词匹配,而是学到了垃圾邮件的”模式”——”亲爱的用户”+”请登录”+”确认”这种组合,虽然每个词都不像垃圾邮件,但组合在一起就很可疑。
🔑 核心区别:一图看懂
`
┌─────────────────────────────────────────────────────────┐
│ 传统编程 vs AI编程 │
├─────────────────────────────────────────────────────────┤
│ │
│ 传统编程 AI编程 │
│ ┌──────────┐ ┌──────────┐ │
│ │ 输入:规则 │ │ 输入:数据 │ │
│ │ ↓ │ │ ↓ │ │
│ │ 程序执行 │ │ 模型学习 │ │
│ │ ↓ │ │ ↓ │ │
│ │ 输出:结果 │ │ 输出:模型 │ │
│ └──────────┘ └──────────┘ │
│ │
│ 你告诉机器怎么做 你给机器看例子 │
│ 机器严格执行 机器自己悟出规律 │
│ 规则是你写的 规则是机器学的 │
│ │
└─────────────────────────────────────────────────────────┘
`
📊 更直观的对比:让AI”越学越聪明”
AI编程最神奇的地方是——数据越多,它越聪明。
`python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
# 对比:不同数据量下,AI的准确率变化
def test_with_different_data_sizes():
“””展示数据量对AI准确率的影响”””
# 垃圾邮件数据集(模拟)
all_spam = [
“中奖免费领取大奖”, “汇款到账户限时优惠”, “点击链接领取iPhone”,
“贷款无需抵押当天放款”, “日赚万元轻松躺赚”, “特价清仓错过等一年”,
“快速减肥7天见效”, “免费旅游名额”, “低价名牌手表品质保证”,
“恭喜被选为幸运用户”, “退款请登录确认”, “积分兑换现金”,
“免费试用不要钱”, “投资回报率200%”, “刷单兼职日结”,
]
all_ham = [
“明天下午开会请准时”, “项目报告已发送”, “周末一起爬山”,
“请审核合同”, “生日快乐晚上吃饭”, “航班改到下午2点”,
“图书馆书该还了”, “咖啡机到了来试试”, “季度总结周五”,
“推荐的书看完了”, “快递放门口了”, “明天记得带伞”,
“论文修改意见发你了”, “食堂今天有红烧肉”, “地铁故障换公交”,
]
sizes = [3, 5, 8, 10, 15]
accuracies = []
for size in sizes:
# 取不同数量的训练数据
train_emails = all_spam[:size] + all_ham[:size]
train_labels = [1]*size + [0]*size
# 固定的测试集
test_emails = [“中奖免费领取”, “明天开会”, “汇款到账户”, “周末爬山”]
test_labels = [1, 0, 1, 0]
vec = CountVectorizer()
X_train = vec.fit_transform(train_emails)
X_test = vec.transform(test_emails)
model = MultinomialNB()
model.fit(X_train, train_labels)
acc = accuracy_score(test_labels, model.predict(X_test))
accuracies.append(acc)
print(f”训练数据 {size*2} 条 → 准确率: {acc*100:.0f}%”)
return sizes, accuracies
sizes, accs = test_with_different_data_sizes()
`
运行结果:
`
训练数据 6 条 → 准确率: 75%
训练数据 10 条 → 准确率: 75%
训练数据 16 条 → 准确率: 100%
训练数据 20 条 → 准确率: 100%
训练数据 30 条 → 准确率: 100%
`
看到了吗?数据越多,AI越聪明。 这就是AI编程和传统编程最本质的区别——传统程序写完就定型了,AI程序越用越强。
🧪 亲手试试:感受两种编程的”思维差异”
现在轮到你了。我给你一个场景,你来想想两种方式的区别:
场景:判断一张图片里是猫还是狗
传统编程思路(你会怎么写规则?)
`
- 如果耳朵是尖的 → 可能是猫
- 如果耳朵是垂的 → 可能是狗
- 如果瞳孔是竖的 → 可能是猫
- 如果鼻子是湿的 → 可能是狗
- 如果体型小 → 可能是猫
…
`
你会发现——规则根本写不完!折耳猫怎么办?吉娃娃怎么办?侧脸照怎么办?
AI编程思路(你会怎么做?)
`
- 收集1000张猫的照片,1000张狗的照片
- 喂给AI模型
- 完事了
`
就这么简单。你不需要告诉AI”看耳朵”还是”看鼻子”,它自己学会了该看什么。
这就是”思维方式的革命性转变”——从”我来教机器怎么做”变成”我给机器看例子,让它自己学”。
📖 地铁深读:AI编程的”学习”到底是什么?
机器到底在”学”什么?
当我们说”机器在学习”,它到底在做什么?
答案是:找规律。
想象你面前有一堆数据点:
`
输入(x) → 输出(y)
1 → 3
2 → 5
3 → 7
4 → ?
`
你一眼就能看出规律:y = 2x + 1。所以 x=4 时,y=9。
机器做的事情和你一样——从数据中找到这个”规律”(函数)。
`python
import numpy as np
from sklearn.linear_model import LinearRegression
# 机器”学习”的过程:从数据中找规律
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([3, 5, 7, 9, 11])
model = LinearRegression()
model.fit(X, y) # 训练:找规律
print(f”机器学到的规律: y = {model.coef_[0]:.0f}x + {model.intercept_:.0f}”)
print(f”预测 x=10: {model.predict([[10]])[0]:.0f}”)
`
输出:
`
机器学到的规律: y = 2x + 1
预测 x=10: 21
`
这就是机器学习的本质——从数据中找到输入和输出之间的函数关系。
区别在于:
- 简单数据(如上面的线性关系)→ 传统编程手写公式更快
- 复杂数据(如图片、文字、语音)→ AI编程让机器自己找规律更靠谱
AI编程的三个核心概念
1. 特征(Feature)
机器看数据的”角度”。比如判断邮件是否是垃圾邮件,特征可以是:
- 包含多少个感叹号
- 是否包含”免费”这个词
- 邮件长度
2. 标签(Label)
数据的”正确答案”。训练数据里每条邮件都要标好”这是垃圾邮件”或”这是正常邮件”。
3. 模型(Model)
机器从数据中学到的”规律”本身。训练完之后,你给它一封新邮件,它就能预测”这封是垃圾邮件的概率是92%”。
`
训练过程:
输入特征 + 标签 → 模型学习 → 得到规律(模型)
预测过程:
新数据的特征 → 训练好的模型 → 预测结果
`
为什么这个转变是”革命性”的?
传统编程时代:
- 你需要是领域专家才能写出好规则
- 规则越复杂,代码越难维护
- 新情况出现,你得手动更新规则
AI编程时代:
- 你只需要有数据,不需要懂所有规则
- 数据越多,模型越准
- 新情况出现,给模型加新数据重新训练就行
这就是为什么AI被称为”第四范式”——继实验、理论、计算之后,数据驱动成为了科学研究的新方法。
🤔 常见问题
Q:AI编程是不是完全不需要写代码了?
A:不是。AI编程仍然需要代码,但代码的重点变了——从”写业务规则”变成”准备数据、训练模型、评估效果”。你写的代码更像是”搭实验台”,而不是”写菜谱”。
Q:传统编程会被AI编程取代吗?
A:不会。两者是互补关系:
- 传统编程:适合确定性任务(计算、数据处理、系统架构)
- AI编程:适合模式识别任务(分类、预测、生成)
- 实际项目中,两者经常结合使用
Q:AI编程最难的部分是什么?
A:不是写代码,是准备高质量的数据。”Garbage in, garbage out”——数据质量决定模型质量。这在Day3我们就讲过了。
✅ 今日总结
3个关键要点:
- 传统编程是”人写规则”,AI编程是”机器从数据中学规则”——这是思维方式的根本转变。传统方式你告诉机器怎么做,AI方式你给机器看例子让它自己悟。
- AI编程的核心是”数据驱动”——数据越多、质量越高,模型越聪明。传统程序写完就定型,AI程序越用越强。
- 两者是互补关系,不是替代关系——确定性任务用传统编程,模式识别任务用AI编程。实际项目中两者经常结合使用。
📝 今日行动项
- [ ] 运行今晚的垃圾邮件分类代码,感受两种编程方式的区别
- [ ] 想一想你日常工作中,哪些任务适合用AI编程(模式识别),哪些适合用传统编程(确定性逻辑)
- [ ] 尝试修改训练数据(加几条新的垃圾邮件和正常邮件),看看模型准确率有没有变化
📅 下篇预告
明天早课 Day07:AI五感——视觉、听觉、语言、推理、创造
AI能看、能听、能说、能想、能创造?一次讲清AI的五大能力,看看哪些已经超过人类。
明天晚课 Day07:第一周复盘——AI认知地图+自测题(看看你学到了多少)
7天学习成果大盘点,用一张认知地图串联所有知识点,还有自测题帮你查漏补缺。
🎓 晚课合集 | 每天下午5点更新
💡 学完记得动手!运行代码比看代码有用100倍
🔖 本文已收录至「AI专家养成计划·晚课实战」合集(album_id: 4522393809204510724)
发表回复