一文彻底搞懂深度学习(4)
激活函数(Activation Function)
神经网络中的线性组合(即加权求和)本身只能表示线性关系。然而,现实世界中的大多数问题都是非线性的。通过引入激活函数,决定神经元是否应该被激活(将信号传递给下一个神经元)以及信号的强度。这样神经网络才能够学习并表示这些非线性关系,从而解决更复杂的问题。
传统激活函数Sigmoid将输入映射到(0,1)之间,常用于二分类问题;主流激活函数ReLU在正区间保持梯度不变,计算高效且能缓解梯度消失问题,广泛应用于深度学习;输出层激活函数Softmax则将原始分数转换为概率分布,确保所有类别概率之和为1,适用于多分类问题。
Activation Function
传统激活函数(Sigmoid)
传统激活函数Sigmoid:Sigmoid 是传统神经网络中常用的一种激活函数,尤其在早期的神经网络结构中。
Sigmoid 函数的输出始终在 0 和 1 之间,这使得它经常被用于二分类问题中,其中输出可以解释为属于某一类的概率。
激活函数Tanh(Sigmoid双曲线版本):Tanh函数是Sigmoid函数的双曲版本,它将任何实数映射到-1到1之间。
Tanh函数是双曲正切函数,其输出值在-1和1之间,常用于神经网络隐藏层,以提供比Sigmoid函数更广的激活范围。
主流激活函数(ReLU)
主流激活函数ReLU:ReLU(Rectified Linear Unit)是当今深度学习领域中最主流的激活函数之一。
与传统的Sigmoid和Tanh激活函数相比,ReLU函数在输入为正数时导数为1,在输入为负数时导数为0,这有效地避免了梯度消失问题。由于ReLU函数的非线性特性和计算简单性,它可以帮助神经网络更快地收敛到最优解。
激活函数Leaky ReLU(ReLU改进版本):Leaky ReLU是一种改进的ReLU激活函数,旨在解决传统ReLU在输入小于等于0时导致的神经元“死亡”问题。它通过允许一个小的、固定的梯度通过负值区域来实现这一点。
注意:虽然上面的公式直接使用了0.01作为α的值,但在实际应用中,α可以是一个在(0, 1)区间内的任意小正数,具体值需要根据任务和数据集进行调整。
与ReLU相比,Leaky ReLU的主要优势在于它能够解决神经元“死亡”问题。然而,在某些情况下,ReLU可能由于其简单的形式和计算效率而更受欢迎。因此,在选择激活函数时,需要根据具体任务和数据集的特点进行权衡。
输出层激活函数(Softmax)
多分类问题激活函数Softmax:Softmax函数是一种用于多分类问题的激活函数,它将神经网络的输出(logits-原始未经处理的得分)转换为一个概率分布。转换后的每个值都在0和1之间,且所有值的总和为1,这使得Softmax函数非常适合用于表示各个类别的概率。
Softmax是一种归一化函数,它将一个数值向量转换为概率分布向量,使得输出值落在0到1之间,且所有输出值的总和为1。
神经网络(Neural network)
神经网络是一种受人脑启发的机器学习算法,它模仿大脑中神经元相互发出信号的方式。它由互连的节点或“神经元”组成,这些节点被组织成层。通过对输入进行加权、计算总和以及应用非线性激活函数,神经网络能够将输入数据转换为不同的表示形式,直到产生输出。
Neural network
神经网络
神经网络(Neural Network)是什么?神经网络是由大量的节点(“神经元”)相互连接而成的网络结构,这些节点在网络中相互连接,可以处理复杂的数据输入,执行各种任务,如分类、回归、模式识别等。
- 前馈神经网络(Feedforward Neural Network):数据在这种网络中单向流动,从输入层到输出层,没有反馈(即网络中没有循环)。
- 卷积神经网络(Convolutional Neural Network, CNN):特别适用于处理图像数据,通过卷积运算提取图像特征。
- 循环神经网络(Recurrent Neural Network, RNN):适用于处理序列数据,如时间序列分析、自然语言处理等。
神经网络的工作原理是什么?模拟人脑神经系统的功能,通过多个节点(神经元)的连接和计算,实现非线性模型的组合和输出。每个节点接收来自前一层节点的输入,进行加权和,加上偏置,然后通过激活函数处理,输出到下一层。
- 节点(神经元):神经网络的基本单元,模拟生物神经元的功能。
- 层次:包括输入层、隐藏层和输出层。输入层负责接收输入数据,隐藏层位于输入层和输出层之间,进行数据的加工和转换,输出层输出最终的计算结果。
- 权重:连接不同神经元的参数,代表一个神经元输出对另一个神经元输出的影响力。在训练过程中,神经网络通过调整权重来学习数据中的模式。
- 偏置:加到加权和上的一个常数,可以看作是每个神经元的一个额外输入。偏置允许神经元即使在所有输入都为零时也有非零的输出。
- 激活函数:决定神经元是否应该被激活(即输出信号)的函数。常见的激活函数包括Sigmoid、ReLU等。
从感知机到神经网络:神经网络起源于20世纪40-50年代的MP模型和感知机,历经两次低谷与两次兴起。
- 起源:20世纪40-50年代,受生物神经元启发,MP模型提出,感知机诞生,为神经网络奠定基础。
- 第一次低谷:60-70年代,因感知机局限性及计算能力不足,神经网络研究陷入低谷。
- 第二次兴起:80年代,多层感知机(MLP)及反向传播算法出现,解决非线性问题,推动神经网络发展。
- 第二次低谷:90年代,因训练困难等问题,神经网络再次低谷。
- 深度学习兴起:21世纪10年代,硬件性能提升、大数据出现,深度学习兴起,卷积神经网络(CNN)、循环神经网络(RNN)等算法涌现,神经网络性能大幅提升。
激活函数
激活函数(Activation Function)是什么?激活函数是神经网络中神经元节点上的一种函数,用于将神经元的输入映射到输出。它决定了节点是否应该被激活(即,是否让信息通过该节点继续在网络中向后传播)。
在神经网络中,输入通过加权求和(权重(W)和偏置(b)),然后被一个函数作用,这个函数就是激活函数。
为什么神经网络需要激活函数?神经网络中的线性组合(即加权和)本身只能表示线性关系。然而,现实世界中的大多数问题都是非线性的。通过引入激活函数,神经网络能够学习并表示这些非线性关系,从而解决更复杂的问题。
感知机(perceptron)
在机器学习中,感知机(perceptron)是最简单的神经网络模型之一,只有输入层和输出层,是二分类的线性分类器。它可以解决与(AND)、或(OR)等简单的线性可分问题,但无法解决复杂的异或(XOR)等非线性可分问题。
perceptron
单层感知机
感知机(perceptron)是什么?感知机是由美国学者Frank Rosenblatt在1957年提出的,它是一种模拟人脑神经元工作原理的模型。感知机接收多个输入信号,通过加权求和并加上偏置值,然后通过一个激活函数将结果转化为输出信号。
- 输入层:接收外部信息,不进行信息处理,只是将信息传递给输出层。
- 输出层:接收输入层的信号,通过加权求和并加上偏置值,然后通过一个激活函数(如阶跃函数)将结果转化为输出信号。
为什么要学习这么古老的算法?感知机是神经网络的起源算法,它的工作原理和概念构成了深度学习算法的基础。通过了解感知机,可以掌握神经网络的基本组成单元、工作原理和训练方法,为后续学习更复杂的模型打下基础。
感知机的工作原理是什么?单层感知机通过加权求和输入信号并加上偏置值,然后经过阶跃激活函数处理,输出二分类结果。
- 加权求和:输入信号被送往输出层时,会被分别乘以各自的权重,然后求和。
- 偏置值:用于调整输出层的激活阈值。
- 激活函数:在单层感知机中,常用的激活函数是阶跃函数,它将大于某个阈值的结果输出为1,小于阈值的结果输出为0。
感知机的训练过程是什么?通过调整权重和偏置值,感知机可以在有限的迭代次数中收敛到一个能够将训练数据集正确分类的分离超平面。
- 定义损失函数:通常使用误分类点到分离超平面的距离作为损失函数。
- 优化方法:采用梯度下降法或其变种来优化损失函数,通过迭代更新权重和偏置值,使损失函数不断减小。
- 迭代更新:在每次迭代中,使用当前的权重和偏置值对训练数据集进行预测,计算预测值与真实标签之间的误差,并根据误差值来调整权重和偏置值。
多层感知机
多层感知机(Multilayer Perceptron,简称MLP)是什么?多层感知机由多个神经元层组成,每个神经元层与前一层全连接。其基本结构包括输入层、输出层和至少一层或多层的隐藏层。
- 输入层:接收输入特征,是数据的入口。
- 隐藏层:位于输入层和输出层之间,用于提取特征和进行非线性变换。隐藏层增加了网络的容量,使其能够学习并表示更复杂的函数。
- 输出层:给出最终的预测结果。
多层感知机的工作原理是什么?多层感知机通过前向传播产生预测结果,计算损失函数评估性能,利用反向传播算法传播梯度,并使用优化算法更新权重和偏置以最小化损失。
- 前向传播:输入数据通过输入层进入网络,经过隐藏层的非线性变换,最终到达输出层并产生预测结果。
- 损失函数计算:根据预测结果和真实标签计算损失函数,用于评估模型的性能。
- 反向传播:通过反向传播算法,将损失函数的梯度从输出层传播到输入层,以更新神经元之间的权重和偏置。
- 参数更新:使用优化算法(如梯度下降)更新权重和偏置,以最小化损失函数。
单层感知机 vs 多层感知机:单层感知机仅包含输入和输出层,主要用于线性可分问题的分类,而多层感知机则增加了隐藏层和非线性激活函数,能够处理复杂的非线性问题。
文章转自微信公众号@架构师带你玩转AI