CodeRoadMap
路线图学习路径文章题库资源社区

浏览

首页路线图学习路径知识库题库文章资源社区我的学习
CodeRoadMap

中文编程学习导航:路线图、讲义与题库,进度可同步。

路线图学习路径文章题库社区

© 2026 CodeRoadMap

津ICP备2026012044号-1|coderoadmap@126.com
首页/AI 人工智能入门 · 微软 12 周课/神经网络入门:感知机

课程目录

  1. 01人工智能简介
  2. 02知识表示与专家系统
  3. 03神经网络简介
  4. 04神经网络入门:感知机
  5. 05使用感知器进行多类别分类
  6. 06神经网络简介:多层感知机
  7. 07使用我们自己的框架进行MNIST分类
  8. 08神经网络框架
  9. 09使用 PyTorch/TensorFlow 进行分类
  10. 10计算机视觉
  11. 11计算机视觉简介
  12. 12使用光流检测运动
  13. 13卷积神经网络
  14. 14宠物面部分类
  15. 15预训练网络与迁移学习
  16. 16使用迁移学习对牛津宠物进行分类
  17. 17自动编码器
  18. 18生成对抗网络
  19. 19目标检测
  20. 20使用好莱坞头部数据集进行头部检测
  21. 21分割
  22. 22人体分割
  23. 23自然语言处理
  24. 24将文本表示为张量
  25. 25嵌入
  26. 26语言建模
  27. 27训练 Skip-Gram 模型
  28. 28循环神经网络
  29. 29生成网络
  30. 30使用 RNN 进行词级文本生成
  31. 31注意机制与Transformer
  32. 32命名实体识别
  33. 33命名实体识别 (NER)
  34. 34预训练大型语言模型
  35. 35遗传算法
  36. 36深度强化学习
  37. 37other-deeprl-lab
  38. 38多智能体系统
  39. 39伦理与负责任的人工智能
  40. 40多模态网络
第 04 课1 小时

神经网络入门:感知机

1957年,康奈尔航空实验室的Frank Rosenblatt首次尝试实现类似现代神经网络的模型。这是一种名为“Mark-1”的硬件实现,设计用于识别简单的几何图形,例如三角形、正方形和圆形。

课程内容

神经网络入门:感知机

课前测验

1957年,康奈尔航空实验室的Frank Rosenblatt首次尝试实现类似现代神经网络的模型。这是一种名为“Mark-1”的硬件实现,设计用于识别简单的几何图形,例如三角形、正方形和圆形。

Frank RosenblattThe Mark 1 Perceptron

图片来源:维基百科

输入图像由20x20的光电池阵列表示,因此神经网络有400个输入和一个二进制输出。一个简单的网络包含一个神经元,也称为阈值逻辑单元。神经网络的权重类似于电位器,在训练阶段需要手动调整。

✅ 电位器是一种允许用户调整电路电阻的设备。

《纽约时报》当时对感知机的报道是:一种电子计算机的胚胎,[海军]期望它能够行走、说话、看见、写作、自我复制并意识到自己的存在。

感知机模型

假设我们的模型有N个特征,那么输入向量将是一个大小为N的向量。感知机是一种二分类模型,即它可以区分两类输入数据。我们假设对于每个输入向量x,感知机的输出将是+1或-1,具体取决于类别。输出通过以下公式计算:

y(x) = f(wTx)

其中f是一个阶跃激活函数

训练感知机

为了训练感知机,我们需要找到一个权重向量w,使得大多数值能够被正确分类,即使误差最小化。这个误差E通过感知机准则定义如下:

E(w) = -∑wTxiti

其中:

  • 求和是在那些导致错误分类的训练数据点i上进行的
  • xi是输入数据,t对于负样本是-1,对于正样本是+1。
i

这个准则被视为权重w的函数,我们需要对其进行最小化。通常使用一种称为梯度下降的方法,我们从一些初始权重w(0)开始,然后在每一步根据以下公式更新权重:

w(t+1) = w(t) - η∇E(w)

这里η是所谓的学习率,∇E(w)表示E的梯度。计算梯度后,我们得到:

w(t+1) = w(t) + ∑ηxiti

Python中的算法如下:

def train(positive_examples, negative_examples, num_iterations = 100, eta = 1):

    weights = [0,0,0] # Initialize weights (almost randomly :)
        
    for i in range(num_iterations):
        pos = random.choice(positive_examples)
        neg = random.choice(negative_examples)

        z = np.dot(pos, weights) # compute perceptron output
        if z < 0: # positive example classified as negative
            weights = weights + eta*weights.shape

        z  = np.dot(neg, weights)
        if z >= 0: # negative example classified as positive
            weights = weights - eta*weights.shape

    return weights

总结

在本课中,你学习了感知机,这是一种二分类模型,并了解了如何通过使用权重向量来训练它。

? 挑战

如果你想尝试构建自己的感知机,可以试试Microsoft Learn上的这个实验,它使用了Azure ML设计器。

课后测验

复习与自学

要了解如何使用感知机解决一个简单问题以及实际问题,并继续学习,请查看感知机笔记本。

这里还有一篇有趣的关于感知机的文章。

作业

在本课中,我们实现了一个用于二分类任务的感知机,并使用它来区分两个手写数字。在本实验中,你需要完全解决数字分类问题,即确定给定图像最可能对应的数字。

  • 说明
  • 笔记本

← 上一课神经网络简介下一课 →使用感知器进行多类别分类