ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

神经网络入门:感知机(Perceptron)模型原理与 Python 训练实战

神经网络入门:感知机(Perceptron)模型原理与 Python 训练实战 神经网络入门感知机Perceptron模型原理与 Python 训练实战【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners导读感知机Perceptron是现代神经网络最早期的雏形之一也是理解深度学习的必经起点。本文以本项目 RAG 课程中的配套讲义 感知机文档及其日文翻译版 translations/ja/15-rag-and-vector-databases/data/perceptron.md为主体系统讲解感知机的历史、数学模型、误差准则与梯度下降训练算法并给出可直接运行的 Python 代码。读完本文你将能独立推导感知机的输出公式与权重更新规则并理解它在神经网络 → 深度学习知识脉络中的基础地位以及它在本仓库 RAG 检索增强生成场景中作为知识库数据所扮演的角色。从 Mark-1 说起感知机的历史背景现代神经网络最早的硬件实现尝试之一出自 1957 年康奈尔航空实验室Cornell Aeronautical Laboratory的 Frank Rosenblatt。他设计的硬件装置名为Mark-1目标是识别三角形、正方形、圆形等原始几何图形。这一硬件实现的关键参数如下构成要素说明输入表示20×20 光电池阵列photocell array因此网络有400 个输入输出1 个二值输出网络结构只包含1 个神经元即阈值逻辑单元threshold logic unit权重行为类似电位器potentiometer训练阶段需要手动调整✅ 电位器potentiometer是一种允许使用者调节电路电阻值的器件。把权重比作电位器意味着早期的感知机权重是物理旋钮式的、靠人工去拧的而不是今天由反向传播自动学习的。当时的媒体对感知机寄予了极高的期望。《纽约时报》曾写道海军期待它是电子计算机的胚胎未来将能够行走、说话、观看、书写、自我复制并意识到自身的存在。今天我们回看这段历史既能看到技术先驱的远见也能看到早期 AI 热潮中的夸大宣传——这正是理解后续AI 寒冬的重要背景。感知机模型二值分类的数学表达假设模型中存在 N 个特征那么输入向量就是一个大小为 N 的向量。感知机是一个**二值分类binary classification**模型即它能把输入数据区分为两个类别。对于每个输入向量 x感知机的输出根据类别取1 或 -1。输出由以下公式计算y(x) f(wᵀx)其中w是权重向量weight vector维度与输入特征一致wᵀx是权重向量与输入向量的点积即加权求和f是阶跃激活函数step activation function负责把加权和压成 1 或 -1 的二值输出。从这一公式可以清晰看到感知机是一个线性分类器它的决策边界在特征空间中是一条直线二维时或一个超平面高维时。因此感知机只能解决线性可分的问题——这也是它后来被多层感知机取代的根本原因参见 own_framework.md 中关于多层感知机扩展线性模型的内容。训练感知机感知机准则与梯度下降训练感知机的目标是找到一个权重向量 w使得它能正确分类绝大多数样本即把**误差error最小化。该误差由感知机准则perceptron criterion**定义E(w) -∑ wᵀxᵢtᵢ其中求和仅针对被错误分类的训练数据点 ixᵢ是输入数据tᵢ对负例取 -1、对正例取 1。感知机准则被视为权重 w 的函数我们的任务就是最小化 E(w)。常用的优化方法是梯度下降gradient descent从某个初始权重 w⁽⁰⁾ 出发每一步按下式更新权重w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ - η∇E(w)其中η是学习率learning rate控制每一步更新的步长∇E(w)是 E 关于 w 的梯度gradient。对梯度进行具体计算后更新公式可以展开为w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ ∑ηxᵢtᵢ也就是说当一个正例被误分类为负例时权重朝该样本的方向增加当一个负例被误分类为正例时权重朝相反方向减小。这正是纠正错误这一朴素思想在数学上的体现。Python 实现感知机训练算法原文档给出了如下 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对这段教学代码需要说明几点算法骨架是正确且标准的每一轮随机抽取一个正例和一个负例计算感知机输出 z wᵀx若正例被判为负z 0则向正例方向修正权重若负例被判为正z ≥ 0则向反方向修正——这与公式w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ ∑ηxᵢtᵢ完全对应其中 tᵢ 的正负号天然决定了修正方向。eta即学习率 η默认值为 1num_iterations是迭代轮数默认 100。从代码结构看示例中的weights以普通 list 初始化而np.dot期望 numpy 数组eta*weights.shape这一写法在真实 numpy 语义下会返回维度元组而非逐元素乘积属于原讲义为了突出修正方向而做的教学化简化。在实际复现时建议将权重初始化为np.zeros(N)或np.random.randn(N)并把更新行改为weights weights eta * pos与weights weights - eta * neg即可得到一个可运行、可收敛的朴素感知机实现。从单层到多层感知机的局限与延伸感知机作为单层线性分类器无法分离非线性可分的类别。在配套讲义 多层感知机介绍 中明确指出后续工作把单层感知机扩展为更灵活的框架实现了多类分类、回归问题以及对非线性可分数据集的分离并引入了softmax 归一化输出、随机梯度下降SGD按小批量 minibatch 计算梯度与反向传播backpropagation等关键机制。可以说感知机是理解这些后续一切的最小可用模型。感知机文档在本仓库 RAG 课程中的角色需要特别指出的是这篇感知机讲义并非孤立存在它在 第 15 课RAG 与向量数据库 中扮演着知识库原始数据的角色。课程场景是为教育创业公司把神经网络讲义接入聊天机器人让学习者能够基于自己的笔记生成练习测验、复习闪卡和内容摘要。在 notebook-rag-vector-databases.ipynb 中可以看到如下关键调用链data_paths [data/frameworks.md?..., data/own_framework.md?..., data/perceptron.md?...] rows [] for path in data_paths: with open(path, r, encodingutf-8) as file: file_content file.read() rows.append({path: path, text: file_content}) df pd.DataFrame(rows, columns[path, text])也就是说data/perceptron.md连同 frameworks.md 和own_framework.md会被读入 DataFrame 作为原始文本文本随后被切分为chunks分块再通过 embedding 模型转换为向量存入向量数据库当用户提出what is a perceptron?这类问题时检索器会找出与问题向量最接近的文档块如笔记本输出中返回的感知机定义片段及其来源路径data/perceptron.md与用户问题一起拼装成提示词交给 LLM 生成 grounded有据可依的回答。因此阅读本文时你可以把感知机当作一个被 RAG 系统索引的真实业务文档来理解它的每一段内容都可能成为一个检索块这正是 RAG 课程中把你的数据接入 LLM理念的最小可运行范例。小结通过本文你学习了感知机的历史1957 年 Rosenblatt 的 Mark-1 硬件实现400 输入 1 阈值逻辑单元感知机模型二值分类模型输出由阶跃激活函数作用于加权和得到y(x) f(wᵀx)训练方法通过感知机准则E(w) -∑wᵀxᵢtᵢ度量误差用梯度下降w⁽ᵗ⁺¹⁾ w⁽ᵗ⁾ ∑ηxᵢtᵢ迭代修正权重η 为学习率代码实践完整 Python 训练骨架及注意事项仓库中的实际位置作为 RAG 课程知识库数据被分块、嵌入、索引并用于增强 LLM 回答。 挑战练习如果你希望亲自动手构建自己的感知机可以尝试基于 Microsoft Learn 的 Azure ML Designer 实验完成一个可视化感知机构建练习。复习与自主延伸想了解感知机如何解决玩具问题与真实问题可继续学习项目中的 RAG 课程笔记 notebook-rag-vector-databases.ipynb观察感知机文本如何被分块、嵌入与检索想深入理解感知机之后的演进请阅读 多层感知机讲义 与 神经网络框架讲义二者覆盖了多类分类、回归、softmax 与梯度下降框架化等主题。课后作业在本课程中感知机被用于二值分类任务例如在两个手写数字之间做区分。进阶实验室作业是完全解决数字分类问题给定一张图片判定其最可能对应的数字即 0–9 的多分类问题。你可以参考讲义中的感知机实现思路结合多层感知机与 softmax 输出完成这一扩展。【免费下载链接】generative-ai-for-beginners21 Lessons, Get Started Building with Generative AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai-for-beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表