- 教程
- 人工智能
- 机器学习
- 深度学习
【免费下载链接】AI-For-Beginners
12 Weeks, 24 Lessons, AI for All!
导读
本文基于 AI-For-Beginners 开源课程的examples/目录整理而成,逐一拆解仓库中提供的 4 个零依赖、可独立运行的入门示例:01-hello-ai-world.py、02-simple-neural-network.py、03-image-classifier.ipynb与04-text-sentiment.py。读者按本文完成环境搭建与示例运行后,将掌握"从数据中学习模式""从零构建神经网络""使用预训练模型做图像分类""用词频统计实现文本情感判别"四条最核心的 AI 技术路径,为进入课程正式章节打下坚实基础。
一、示例总览:四个入门示例分别解决什么问题
仓库 examples/README.md 给出了完整的示例清单,其核心定位是简单、独立、带详细注释、逐步讲解。四个示例由浅入深,覆盖了 AI 领域最典型的四种任务类型:
| 示例 | 文件 | 说明 | 难度 | 前置知识 |
|---|---|---|---|---|
| Hello AI World | examples/01-hello-ai-world.py | 你的第一个 AI 程序——简单的模式识别 | ⭐ 入门 | Python 基础 |
| 简单神经网络 | examples/02-simple-neural-network.py | 从零构建一个神经网络 | ⭐⭐ 进阶入门 | Python、基础数学 |
| 图像分类器 | examples/03-image-classifier.ipynb | 用预训练模型对图像进行分类 | ⭐⭐ 进阶入门 | Python、numpy |
| 文本情感分析 | examples/04-text-sentiment.py | 分析文本情感(正面 / 负面) | ⭐⭐ 进阶入门 | Python |
从设计意图看,这四个示例刻意不依赖任何机器学习框架(前两个示例仅使用 Python 标准库,第三个示例才引入 TensorFlow),目的是让初学者在接触 Keras、PyTorch 等框架之前,先真正理解"AI 内部到底在做什么"。
二、环境准备:两种方式搭建运行环境
2.1 方式一:pip 按需安装
运行 Python 脚本需要 Python 3.8 及以上版本,示例文档明确给出了最小安装指令:
# 运行 Python 脚本所需的包 pip install numpy # 运行 Jupyter notebook(图像分类器)所需的包 pip install jupyter numpy pillow tensorflow2.2 方式二:使用主课程的 conda 环境(推荐)
仓库根目录提供了完整的 environment.yml 文件,其中定义了名为ai4beg的 conda 环境,覆盖了整个课程的全部依赖:
conda env create --name ai4beg --file environment.yml conda activate ai4beg从 environment.yml 的内容可以看到,该环境不仅包含jupyter、numpy=1.26、requests=2.32、matplotlib=3.9等基础组件,还同时预装了深度学习双栈:pytorch::pytorch/torchvision/torchtext/torchdata与conda-forge::opencv,并以 pip 方式读取根目录 requirements.txt 补充tensorflow==2.17.0、keras==3.13.2、nltk==3.10.0、gensim==4.3.3等课程各章节所需的库。
提示:如果只跑本文的四个示例,采用 2.1 的轻量安装即可;若打算继续学习 课程 中的框架章节(涉及 PyTorch、TensorFlow、Keras),建议直接采用 2.2 的完整环境,避免后续反复补装依赖。
三、运行示例:脚本与 Notebook 的两种启动方式
examples/目录下共 5 个文件(4 个示例 + 1 个 README),按文件类型区分运行方式:
Python 脚本(.py 文件):
# 进入 examples 目录后执行 python 01-hello-ai-world.py python 02-simple-neural-network.py python 04-text-sentiment.pyJupyter Notebook(.ipynb 文件):
jupyter notebook 03-image-classifier.ipynb03-image-classifier.ipynb的 metadata 中标明其内核为Python 3(ipython3),因此请确保激活的环境内已安装ipykernel——environment.yml 中已包含该依赖。
四、示例一:Hello AI World——用纯 Python 教机器学会 y = 2x
这是整个课程的第一个 AI 程序,代码位于 examples/01-hello-ai-world.py。它的目标非常朴素:让程序通过"看例子"自学一个数学模式y = 2x,全程不依赖任何第三方库,只使用 Python 标准库中的random模块。
4.1 核心机制:一个参数的学习
源码中的SimpleAILearner类只维护两个变量:
weight:即"权重",是 AI 要学习的对象,初始值通过random.uniform(0, 5)随机猜测;learning_rate:学习率,固定为0.01,控制每次调整权重时的步长。
预测函数predict(x)就是一次线性计算self.weight * x。整个模型只有这一个参数,这让初学者能直观看到"AI 学习 = 调整参数"的本质。
4.2 训练循环:误差驱动
train()方法接收(x, y)的训练数据对,默认迭代 100 个 epoch,每个 epoch 内:
- 对每条样本调用
predict(x)得到预测值y_predicted; - 计算误差
error = y_actual - y_predicted,并累加绝对值得到total_error; - 执行更新规则
self.weight += self.learning_rate * error * x。
这就是梯度下降最朴素的形态:误差越大、输入越大,权重调整幅度越大。代码每 20 个 epoch 打印一次平均误差与当前权重,训练结束后输出最终权重——理想情况下它会收敛到接近2.0。
4.3 训练数据与测试
main()中构造了 5 条训练样本:(1, 2) (2, 4) (3, 6) (4, 8) (5, 10)。训练完成后,用[6, 7, 10, 15]这 4 个从未见过的输入进行测试,逐一打印预测值、真实值与差值。
从源码结构看,这个示例刻意通过"训练集 / 测试集分离"向读者传递监督学习的两个核心概念:泛化能力(对未见数据的预测)与误差度量。脚本末尾还给出了三个建议实验方向:更换训练数据学习其他模式、调整学习率(源码第 29 行)、修改 epoch 观察训练时长对精度的影响。
五、示例二:简单神经网络——从零实现神经元的前向传播与反向传播
第二个示例位于 examples/02-simple-neural-network.py,依旧零框架,仅用random与math标准库。任务设定为:判断二维平面上的点位于直线 y = x 的上方还是下方(二分类问题)。
5.1 Sigmoid 激活函数及其导数
源码提供了两个关键数学函数:
sigmoid(x):把任意实数压缩到 (0, 1) 区间,输出可理解为"置信度"——接近 1 表示"非常有把握是 YES",接近 0 表示"非常有把握是 NO",0.5 附近表示"不确定"。为避免极端数值溢出,实现中对x > 100与x < -100做了截断处理;sigmoid_derivative(x):返回x * (1 - x),即 sigmoid 的导数。在反向传播中,这个导数决定了"每个权重该被调整多少"。
5.2 单个神经元的五步决策流程
SimpleNeuron类用一个神经元完成分类任务,__init__时每个输入随机分配[-1, 1]区间的权重,并附带一个随机偏置bias。feedforward()依次执行:
- 每个输入乘以对应权重后求和:
sum(w * x for w, x in zip(...)); - 加上偏置;
- 通过 sigmoid 激活得到输出。
train()则实现反向传播:计算误差error = target - self.output,再乘以 sigmoid 导数得到调整量delta,随后按learning_rate(默认 0.1)逐项更新权重与偏置。
5.3 数据生成、训练与评估闭环
generate_training_data()随机生成 100 个 (x, y) 坐标点,按label = 1 if y > x else 0打标签,构成训练集。主流程完整演示了"数据生成 → 初始化神经元 → 训练 50 个 epoch → 用 10 个新点测试"的标准闭环,并用visualize_decision()打印每个测试点的预测值、真实类别与对错标记,最后统计分类准确率。
从源码结构看,该示例把"神经元是神经网络的基本构件""前向传播做预测""反向传播从错误中学习"三个概念浓缩进了约 260 行可运行代码中,是理解 神经网络课程 中感知机(Perceptron)与自定义框架章节的最佳前置实验。
六、示例三:图像分类器——用 MobileNetV2 预训练模型识别猫、狗与汽车
第三个示例是 Jupyter Notebook 形式的 examples/03-image-classifier.ipynb,它首次引入深度学习框架 TensorFlow,采用迁移学习思路:直接加载已在 ImageNet 百万级图像上训练好的MobileNetV2模型,而非从零训练。
6.1 模型加载
model = MobileNetV2(weights='imagenet', include_top=True)weights='imagenet':使用在 ImageNet 数据集上预训练的权重(首次运行会自动下载,耗时约一分钟);include_top=True:保留顶部分类层,使模型能够输出 1000 个物体类别的分类概率。
6.2 图像预处理流水线
Notebook 定义了三个辅助函数,构成"URL 加载 → 预处理 → 分类"的完整流水线:
| 函数 | 职责 | 关键细节 |
|---|---|---|
load_image_from_url(url) | 从 URL 拉取图片 | 用requests下载后经BytesIO交给 PIL 打开 |
prepare_image(img) | 将图片转为模型输入 | 缩放到 224×224 → 转 numpy 数组 →expand_dims加批次维 →preprocess_input按 MobileNetV2 规则归一化 |
classify_image(img) | 推理并解码 | model.predict输出概率后,用decode_predictions(top=5)得到 Top-5 可读标签与置信度 |
6.3 运行结果与置信度解读
Notebook 内置 3 张 Unsplash 测试图(猫、狗、汽车),并支持替换自定义图片 URL(示例中内置了一张花卉图)。每个分类结果都会以条形图 + 百分比的形式展示 Top-5 预测。关于置信度的解读,Notebook 给出了明确分段:
- 90%–100%:非常有把握(几乎确定正确);
- 70%–90%:有把握(大概率正确);
- 50%–70%:有一定把握(可能正确);
- 低于 50%:把握不足(结果不确定)。
同时它坦诚指出了预训练模型的四类失败场景:不寻常的角度或光照、图中存在多个物体、出现 1000 类之外的稀有物体、低质量(模糊 / 像素化)图像。这一小节非常适合作为理解 计算机视觉课程 中迁移学习、CNN 原理的直观入口。
七、示例四:文本情感分析——用词频统计判断影评正负面
第四个示例 examples/04-text-sentiment.py 将视角转向自然语言处理(NLP),任务设定为:判断一条影评是正面还是负面。它同样不依赖任何机器学习库,仅用re与collections.Counter。
7.1 文本预处理三步曲
SimpleSentimentAnalyzer.preprocess_text()演示了 NLP 中最基础的清洗流程:
- 转小写:
text.lower(); - 去标点:
re.sub(r'[^a-z\s]', '', text)只保留小写字母与空白; - 分词并过滤短词:按空格切分后,丢弃长度 ≤ 2 的词(如 "a"、"i"),避免噪声。
7.2 训练:为每个词计算情感得分
train()接收(文本, 情感标签)列表,分别统计正面文本与负面文本中的词频(Counter),然后为每个词计算情感得分:
score = (pos_count - neg_count) / (total + 1)公式含义直观:正面出现越多得分越正,负面出现越多得分越负;分母+1是平滑项,防止出现除以零。训练结束后,代码会打印得分最高的 5 个"最正面词"与得分最低的 5 个"最负面词",让学习者直接看到模型学到的东西。
7.3 预测:平均得分 + 置信度
analyze()对输入文本预处理后,累加命中词的得分并取平均:
avg_score > 0→ 判定为 positive,否则为 negative;- 置信度按
min(abs(avg_score) * 100, 100)折算成百分比; - 未训练就调用会抛出异常提示。
内置训练数据为 16 条影评(8 正 8 负),主流程除批量测试 6 条新影评外,还提供了交互模式:程序循环读取input(),用户可随时输入自己的影评(输入quit/exit/q退出),实时获得情感判定、置信度与得分。这一交互设计非常适合课堂演示。
该示例虽然只用词频统计这种朴素方法,却完整覆盖了 NLP 的三块基石——文本预处理、特征提取(词→数值)、分类判别,可作为进入 NLP 课程 前的热身实验。
八、推荐学习路径:四个示例的正确打开顺序
examples/README.md 建议严格按如下顺序推进,每一步都在前一步的概念基础上叠加新的复杂度:
- 先从 Hello AI World 开始——掌握"从数据中学习模式"的基本思想;
- 再构建简单神经网络——理解神经网络内部究竟如何工作;
- 然后尝试图像分类器——亲眼看到 AI 在真实图像上的表现;
- 最后分析文本情感——探索自然语言处理这一分支。
这条路径的设计逻辑是从"一个参数的线性模型"逐步过渡到"神经元 + 激活函数 + 反向传播",再从"纯 Python 手写"过渡到"调用 TensorFlow 预训练模型",最后切换任务领域进入 NLP,恰好与课程主干(人工智能导论 → 神经网络 → 计算机视觉 → 自然语言处理)保持一致。
九、给初学者的四条实用建议
- 认真阅读代码注释——这四个示例的注释密度很高,逐行解释了每个语句的意图,它们是比任何教程都更好的"老师";
- 大胆实验——修改训练数据、调大调小学习率、增减 epoch、换测试图片和影评,观察输出如何变化,这是建立直觉最快的方式;
- 不必急于理解一切——反向传播的数学推导、MobileNetV2 的架构细节都不是第一次运行就要搞懂的,先让程序跑起来、输出看起来合理即可;
- 积极提问与交流——遇到问题可以到仓库的 Discussions 中讨论,或对照 troubleshoot.md 排查常见环境问题。
十、下一步:从示例走向完整课程
完成上述四个示例后,即可进入课程正式章节,把示例中的直觉升华为系统知识:
- 人工智能导论——什么是 AI、弱 AI 与强 AI、图灵测试与不同 AI 路线;
- 神经网络——感知机、自定义神经网络框架、PyTorch/TensorFlow 等主流框架;
- 计算机视觉——卷积神经网络、迁移学习、目标检测与图像分割;
- 自然语言处理——文本表示、词嵌入、语言模型、RNN 与 Transformer。
记住:每一位专家都曾经是初学者。从跑通第一个脚本开始,你的 AI 学习之旅已经正式启程。
- 教程
- 人工智能
- 机器学习
- 深度学习
【免费下载链接】AI-For-Beginners
12 Weeks, 24 Lessons, AI for All!
相关推荐
AI-For-Beginners 入门示例实战指南:4 个动手实验带你从模式识别走到文本情感分析
AI For Beginners 入门示例实战指南:4 个动手实验带你从模式识别走到文本情感分析 examples/ 是 AI For Beginners ht
教程人工智能机器学习深度学习AI-For-Beginners 入门实战指南:四个独立示例带你快速上手 AI 与机器学习
AI For Beginners 入门实战指南:四个独立示例带你快速上手 AI 与机器学习 本文基于 AI For Beginners 仓库的 examples
教程人工智能机器学习深度学习AI-For-Beginners 自然语言处理(NLP)学习指南:从文本张量到 Transformer 的神经网络之旅
AI For Beginners 自然语言处理(NLP)学习指南:从文本张量到 Transformer 的神经网络之旅 本指南基于 AI For Beginne
教程人工智能机器学习深度学习
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考