zhuanlan.zhihu.com
🖥️神经网络 I
type
status
date
slug
summary
tags
category
icon
password
引入
- 生物启发:大脑由大量神经元(Neuron)构成,彼此连接、传递电信号。 人工神经网络用数学函数近似这种连接-激活机制。
- 机器学习观:网络是一个可学习的函数族 ,通过数据学习参数 ,把输入映射到输出。
- 与感知机一脉相承:感知机是最简单的“单层神经元”模型;添加非线性与多层结构,就得到能拟合复杂函数的深度神经网络(DNN)。
神经元与激活函数
给定输入向量 ,权重 和偏差 :
其中 是激活函数(Activation),为模型引入非线性。
常见的非线性激活函数(Non-Linear Activation Functions)有以下几种:
- ReLU:(简洁高效,现代网络常用)

- Logistic Sigmoid:(输出可解释为概率)

- Step:(一般仅用于示意/感知机)

- Tanh:(零均值、饱和区间平滑)

单神经元是线性模型+非线性激活的组合。其中,线性部分提供可学习的方向与阈值,非线性激活使组合函数具备分段非线性的表达力。
感知机
以下面这个最简单的神经网络为例:

通过选择恰当的 和激活函数 ,使 与真值表一致。
代码实现:构建神经元和神经网络的层



练习 #2.1 代码实现
- 用代码构建神经元类
Neuron(红色圆圈代表的节点) - 输入:
num_input:(上图num_input为2) - 初始化:
- 权重
w:一个包含所有权重的列表,注意每个权重都是类Value - 偏差
b:偏差是类Value - 初始化是
[-1,1]之间随机生成权重和偏差,可以用random.uniform(a,b)从a到b之间的均匀分布生成随机数 __call__:计算神经元的输出(返回的是一个Value类),激活函数为tanh()
多层神经网络
多层神经网络(Multilayer Neural Network, DNN)是具有输入层、输出层和至少一个隐藏层(Hidden Layers)的人工神经网络,可对更复杂的非线性函数进行建模。
多层感知机(Multilayer Perceptron, MLP)可以视为朴素的一种 DNN,它通过引入一个或多个隐藏层来克服感知机的局限性。它的每一层都是全连接层,因此也叫全连接前馈神经网络。

示例:使用神经网络表示非线性函数

代码实现:构建 MLP 类

练习 #4 代码实现
- 构建 MLP 类
神经网络的训练
梯度下降与链式法则
是一个用来衡量模型 拟合能力的函数,称损失函数(Loss Function)。在神经网络的训练过程中,我们需要不断调整参数 ,以最小化损失函数。这是一个优化问题,可以通过梯度下降算法求解:


由上式可见,导数(梯度)的计算是模型训练的关键步骤。尽管这些计算满足链式法则,但是我们显然不可能暴力手算——我们会依赖大多数现代深度学习框架都会提供的自动微分(Autograd, AD)技术帮助我们计算。
当我们通过每个连续的函数传递数据时,框架会构建一个计算图,记录每个值如何依赖于其他值。为了计算导数,自动微分沿此图反向工作,应用链式法则。以这种方式应用链式法则的计算算法称为反向传播(Backpropagation)。

关于 AD 的详细介绍,可参见
zhuanlan.zhihu.com![zhuanlan.zhihu.com]()
、
实现你自己的自动微分 · Julia编程指南![实现你自己的自动微分 · Julia编程指南]()
。此处不再赘述它的基本原理和优势。
实现你自己的自动微分 · Julia编程指南
自动微分(automatic differentiation)技术在机器学习里也叫做后向传播,它的原理实际上是通过记录运算顺序,利用已经定义好的导数规则,生成一个正常计算程序对偶的程序。一般来说有两种自动微分方式,一种是前向自动微分(Forward Automatic Differentiation)另外一种是后向自动微分(Reverse Automatic Differentiation),后者更加适合多参数的情况(算法细节就不详述了,多参数的时候后向自动微分的时间复杂度更低,一次传播可以计算所有的参数)。后向自动微分会将所有的操作以一张图的方式存储下来,这张图称为计算图。这也是各大深度学习框架的核心所在——如何干净地产生一个计算图,然后高效计算它。为了展示计算图是什么,我从 Cornell,CS5740,2017sp 这门课的课件里搬运了一些图,然后把他们做成了动画。动画使用纯 Julia 的框架 Luxor 制作。
下面我们来通过 Python 代码“手搓”自动微分。
代码实现:构建拓扑排序函数

代码实现:实现 tanh 函数


上一篇
机器学习
下一篇
Article Template
Loading...


