🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 多层感知器神经网络速成课程 > 原文: [https://machinelearningmastery.com/neural-networks-crash-course/](https://machinelearningmastery.com/neural-networks-crash-course/) 人工神经网络是一个迷人的研究领域,尽管它们在刚开始时可能会令人生畏。 在描述该领域中使用的数据结构和算法时,使用了许多专门术语。 在这篇文章中,您将获得在多层感知器人工神经网络领域中使用的术语和过程的速成课程。阅读这篇文章后你会知道: * 神经网络的构建块,包括神经元,权重和激活函数。 * 如何在层中使用构建块来创建网络。 * 如何从示例数据中训练网络。 让我们开始吧。 ![Crash Course In Neural Networks](https://img.kancloud.cn/1d/d2/1dd24de6399b0582fda9d63caffb47cf_640x426.png) 神经网络中的速成课程 摄影: [Joe Stump](https://www.flickr.com/photos/joestump/2357729981/) ,保留一些权利。 ## 速成课程概述 我们将在这篇文章中很快介绍很多内容。以下是对未来发展的看法: 1. 多层感知。 2. 神经元,重量和激活。 3. 神经元网络。 4. 训练网络。 我们将从概述多层感知器开始。 ## 1.多层感知器 人工神经网络领域通常被称为神经网络或多层感知器,可能是最有用的神经网络类型。感知器是单个神经元模型,是较大神经网络的前身。 这是一个研究生物大脑的简单模型如何用于解决困难计算任务的领域,例如我们在机器学习中看到的预测建模任务。目标不是创建大脑的真实模型,而是开发可用于模拟难题的稳健算法和数据结构。 神经网络的力量来自于他们学习训练数据中的表示以及如何将其与您想要预测的输出变量最佳联系的能力。从这个意义上说,神经网络学习映射。在数学上,它们能够学习任何映射函数,并且已经被证明是一种通用的近似算法。 神经网络的预测能力来自网络的分层或多层结构。数据结构可以选择(学会表示)不同比例或分辨率的特征,并将它们组合成更高阶的特征。例如,从线条到线条到形状的集合。 ## 2.神经元 神经网络的构建块是人工神经元。 这些是具有加权输入信号并使用激活功能产生输出信号的简单计算单元。 ![Model of a Simple Neuron](https://img.kancloud.cn/40/fd/40fd61d1fad7a650db3b929fc2dc0cf9_220x342.png) 简单神经元的模型 ### 神经元重量 您可能熟悉线性回归,在这种情况下,输入上的权重非常类似于回归方程中使用的系数。 像线性回归一样,每个神经元也有一个偏差,可以认为它是一个总是具有 1.0 值的输入,它也必须加权。 例如,神经元可能有两个输入,在这种情况下它需要三个权重。每个输入一个,偏差一个。 虽然可以使用更复杂的初始化方案,但是权重通常被初始化为小的随机值,例如 0 到 0.3 范围内的值。 与线性回归一样,较大的权重表明复杂性和脆弱性增加。期望将网络中的权重保持较小并且可以使用正则化技术。 ### 激活 加权输入相加并通过激活函数,有时称为传递函数。 激活函数是求和加权输入与神经元输出的简单映射。它被称为激活函数,因为它控制神经元激活的阈值和输出信号的强度。 使用历史上简单的步骤激活函数,其中如果求和输入高于阈值,例如 0.5,则神经元将输出值 1.0,否则将输出 0.0。 传统上使用非线性激活函数。这允许网络以更复杂的方式组合输入,从而在他们可以建模的功能中提供更丰富的功能。使用非线性函数,如 logistic 函数,也称为 sigmoid 函数,输出 0 到 1 之间的值,具有 s 形分布,双曲正切函数也称为 tanh,在-1 到+1 范围内输出相同的分布。 最近,整流器激活功能已被证明可提供更好的结果。 ## 3.神经元网络 神经元被排列成神经元网络。 一行神经元称为层,一个网络可以有多个层。网络中神经元的体系结构通常称为网络拓扑。 ![Model of a Simple Network](https://img.kancloud.cn/d8/0a/d80a7a03f4b3c75c654b529b292a9495_300x196.png) 简单网络的模型 ### 输入或可见层 从数据集获取输入的底层称为可见层,因为它是网络的公开部分。通常,神经网络使用可见层绘制,每个输入值或数据集中的列具有一个神经元。这些不是如上所述的神经元,而是简单地将输入值传递到下一层。 ### 隐藏层 输入层之后的层称为隐藏层,因为它们不直接暴露给输入。最简单的网络结构是在隐藏层中有一个直接输出值的神经元。 鉴于计算能力和高效库的增加,可以构建非常深的神经网络。深度学习可以指神经网络中有许多隐藏层。它们很深,因为它们在历史上训练起来会非常缓慢,但可能需要几秒钟或几分钟才能使用现代技术和硬件进行训练。 ### 输出层 最后的隐藏层称为输出层,它负责输出与问题所需格式相对应的值或值向量。 输出层中激活函数的选择受到您正在建模的问题类型的严格限制。例如: * 回归问题可能具有单个输出神经元,并且神经元可能没有激活功能。 * 二元分类问题可能有一个输出神经元,并使用 sigmoid 激活函数输出 0 到 1 之间的值,以表示预测类 1 的值的概率。这可以通过使用阈值转换为清晰的类值 0.5 和小于阈值的捕捉值为 0,否则为 1。 * 多类分类问题可能在输出层中具有多个神经元,每个类一个(例如,着名的[虹膜花分类问题](https://en.wikipedia.org/wiki/Iris_flower_data_set)中的三个类别的三个神经元)。在这种情况下,softmax 激活函数可用于输出网络预测每个类值的概率。选择具有最高概率的输出可用于产生清晰的类别分类值。 ## 4.训练网络 配置完成后,需要在数据集上训练神经网络。 ### 数据准备 您必须首先准备数据以进行神经网络的训练。 数据必须是数字,例如实数值。如果您有分类数据,例如值为“male”和“female”的性别属性,则可以将其转换为称为[一个热编码](https://en.wikipedia.org/wiki/One-hot)的实值表示。这是为每个类值添加一个新列的位置(在男性和女性的性别情况下为两列),并且每行添加 0 或 1,具体取决于该行的类值。 对于具有多个类的分类问题,可以在输出变量上使用相同的热编码。这将从单个列创建一个二进制向量,该向量很容易直接与网络输出层中神经元的输出进行比较,如上所述,将为每个类输出一个值。 神经网络要求输入以一致的方式缩放。您可以将其重新调整到 0 到 1 之间的范围,称为标准化。另一种流行的技术是将其标准化,使每列的分布均值为零,标准偏差为 1。 缩放也适用于图像像素数据。诸如单词的数据可以被转换为整数,诸如数据集中的单词的流行度等级以及其他编码技术。 ### 随机梯度下降 用于神经网络的经典且仍然优选的训练算法称为随机梯度下降。 这是一行数据作为输入一次暴露给网络的地方。当网络最终产生输出值时,网络处理输入向上激活神经元。这称为网络上的前向传递。它是在训练网络之后使用的传递类型,以便对新数据进行预测。 将网络输出与预期输出进行比较,并计算误差。然后,该错误通过网络传播回来,一次一层,并根据它们对错误的贡献量来更新权重。这个聪明的数学运算称为[反向传播算法](https://en.wikipedia.org/wiki/Backpropagation)。 对训练数据中的所有示例重复该过程。更新整个训练数据集的网络之一称为迭代。可以训练网络数十,数百或数千个时期。 ### 重量更新 可以从针对每个训练示例计算的误差更新网络中的权重,这称为在线学习。它可能导致网络快速但又混乱的变化。 或者,可以在所有训练示例中保存错误,并且最后可以更新网络。这称为批量学习,通常更稳定。 通常,因为数据集如此之大并且由于计算效率,批量的大小,在更新之前显示网络的示例的数量通常减少到少量,例如数十或数百个示例。 更新权重的数量由称为学习率的配置参数控制。它也称为步长,控制给定错误对网络权重的步骤或更改。通常使用小的重量尺寸,例如 0.1 或 0.01 或更小。 可以使用您可以设置的其他配置项补充更新等式。 * 动量是一个术语,它包含先前重量更新的属性,以允许权重在相同方向上继续变化,即使计算的误差较少。 * 学习率衰减用于降低时期上的学习率,以允许网络在开始时对权重进行大的改变,并且在训练时间表中稍后进行较小的微调改变。 ### 预测 一旦神经网络被训练,它就可以用于进行预测。 您可以对测试或验证数据进行预测,以便估计模型对未见数据的技能。您还可以在操作上部署它并使用它来连续进行预测。 您需要从模型中保存网络拓扑和最终权重集。通过向网络提供输入并执行前向传递来进行预测,从而允许它生成可用作预测的输出。 ## 更多资源 关于人工神经网络的主题有数十年的论文和书籍。 如果您是该领域的新手,我建议您阅读以下资源: * [Neural Smithing:前馈人工神经网络中的监督学习](http://www.amazon.com/dp/0262527014?tag=inspiredalgor-20) * [模式识别神经网络](http://www.amazon.com/dp/0198538642?tag=inspiredalgor-20) * [神经网络简介](http://www.amazon.com/dp/1857285034?tag=inspiredalgor-20) ## 摘要 在这篇文章中,您发现了用于机器学习的人工神经网络 阅读本文后,您现在知道: * 神经网络如何不是大脑的模型,而是解决复杂机器学习问题的计算模型。 * 神经网络由具有权重和激活功能的神经元组成。 * 网络被组织成神经元层,并使用随机梯度下降进行训练。 * 在训练神经网络模型之前准备数据是个好主意。 你对神经网络或这篇文章有任何疑问吗?在评论中提出您的问题,我会尽力回答。