我想帮别人做网站有这样的平台吗,手机ps在线图片编辑,经典vi设计案例分析,乐清手机网站一、神经网络
1.神经网络定义#xff1a;人工神经网络#xff08;Artificial Neural Network#xff0c;ANN#xff09;也简称为神经网络#xff08;NN#xff09;#xff0c;是一种模仿生物神经网络结构和功能的计算模型。人脑可以看作是一个生物神经网络#xff0c;由…一、神经网络
1.神经网络定义人工神经网络Artificial Neural NetworkANN也简称为神经网络NN是一种模仿生物神经网络结构和功能的计算模型。人脑可以看作是一个生物神经网络由众多的神经元连接而成。各个神经元传递复杂的电信号树突接收到输入信号然后对信号进行处理通过轴突输出信号。神经网络中信息只向一个方向移动即从输入节点向前移动通过隐藏节点再向输出节点移动。其中基本部分是
输入层即输入x的那一层输出层即输出y的那一层隐藏层输入层和输出层之间都是隐藏层特点
同一层神经网络之间没有连接第N层的每个神经元和第N-1层的所有神经元相连这就是全连接神经网络full connected,fc第N-1层神经元的输出就是第N层神经元的输入每个连接都有一个权重值w系数和b系数2.激活函数
激活函数用于对每层的输出数据加权和数据进行变换进而为整个网络注入了非线性因素。此时神经网络就可以拟合各种曲线
没有引入非线性因素的网络等价于使用一个线性模型来拟合通过给网络输出增加激活函数实现引入非线性因素使得网络模型可以逼近任意函数提升网络对复杂问题的拟合能力1sigmiod函数公式f(x)11e−xf(x) \frac{1}{1e^{-x}}f(x)1e−x1求导公式KaTeX parse error: {equation} can be used only in display mode.缺点当神经网络的激活处于0 1位置时其梯度几乎为0容易导致梯度消失此时网络参数将更新极其缓慢或者无法更新一般来说sigmoid网络在5层之类就会产生梯度消失现象。而且该激活函数并不是以0为中心所以在实践中很少使用这种激活函数sigmoid函数一般只用于二分类的输出层2tanh激活函数
公式f(x)1−e−2x1e−2xf(x) \frac{1-e^{-2x}}{1e^{-2x}}f(x)1e−2x1−e−2x求导公式KaTeX parse error: {equation} can be used only in display mode.其输出值域是-1 1值域范围更大使之更适合于神经网络的输入层和隐藏层与sigmoid相比它是以0为中心的且梯度相对于sigmoid大使得其收敛速度要比sigmoid快减少迭代次数但当输入值较大时会导致梯度消失的问题使用时可在隐藏层使用tanh函数在输出层使用sigmoid函数
3ReLU激活函数是目前使用最多的一种激活函数公式f(x)max(0,x)f(x)max(0, x)f(x)max(0,x)求导公式KaTeX parse error: {equation} can be used only in display mode.激活函数将小于0的值映射为0而大于0的值则保持不变它更加重视正信号而忽略负信号这种激活函数运算更为简单能够提高模型的训练效率当x0时ReLU导数为0而当x0时则不存在饱和问题。所以ReLU能够在x0时保持梯度不衰减从而缓解梯度消失问题。然而随着训练的推进部分输入会落入小于0的区域导致对应权重无法更新这种现象被称为“神经元死亡”ReLU是目前最常用的激活函数。与sigmoid相比ReLU的优势是采用sigmoid函数计算量大指数运算反向传播球误差梯度时计算量相对大而采用ReLU激活函数整个过程的计算量节省很多。sigmoid函数反向传播时很容易出现梯度消失的情况从而无法完成深度网络的训练。ReLU会使一部分神经元的输出为0这样就造成了网络的稀疏性网络变得简单并且减少了参数的相互依存关系缓解了过拟合问题的发生4Softmax函数softmax用于多分类过程中它是二分类函数sigmoid在多分类上的推广目的是将多分类的结果以概率形式呈现出来公式softmax(zi)ezi∑jejzsoftmax(z_i)\frac{e^{z_i}}{\sum_je^z_j}softmax(zi)∑jejzezi
ziz_izi输出层中每个神经元加权和logitsSoftmax就是将网络输出logits通过softmax函数就映射成为01的值而这些值的累和为1那么我们将它理解成概率选取概率最大也就是值对应最大的节点作为我们的预测目标类别5激活函数的选择方法
对于隐藏层
优先选择ReLU激活函数如果ReLU效果不好那么尝试其他激活如Leaky ReLU等如果你使用了ReLU需要注意一下Dead ReLU问题避免出现大的梯度导致过多的神经元死亡少使用sigmoid激活函数可以尝试使用tanh激活函数
对于输出层
二分类问题选择sigmoid激活函数多分类问题选择softmax激活函数回归问题选择identity激活函数恒等激活
3.参数初始化
优先选择kaiming和xavier初始化方式
1初始化www
均匀分布初始化权重参数初始化从区间均匀随机取值。即在(−1d,1d)(-\frac{1}{\sqrt d}, \frac{1}{\sqrt d})(−d1,d1)均匀分布中生成当前神经元的权重其中d为每个神经元的输入数量正态分布初始化随机初始化从均值为0标准差是1的高斯分布中取样使用一些很小的值对参数W进行初始化
2初始化bbb
全0初始化将神经网络中的所有权重参数初始化为0全1初始化将神经网络中的所有权重参数初始化为1固定值初始化将神经网络中的所有权重参数初始化为某个固定值
3初始化方法改进
kaiming初始化也叫做HE初始化
HE初始化分为正态分布的HE初始化均匀分布的HE初始化
正态分布的HE初始化stddev2fan_instddev \sqrt{\frac{2}{fan\_in}}stddevfan_in2均匀分布的HE初始化从[-limit, limit]中的均匀分布中抽取样本limit是6fan_in\sqrt{\frac{6}{fan\_in}}fan_in6fan_infan\_infan_in输入神经元个数xavier初始化也叫做Glorot初始化
Glorot初始化分为正态分布的xavier初始化均匀分布的xavier初始化
正态化的xavier初始化stddev2fan_infan_outstddev\sqrt{\frac{2}{fan\_infan\_out}}stddevfan_infan_out2均匀分布的Xavier初始化从[-limit, limit]中的均匀分布中抽取样本limit是6fan_infan_out\sqrt{\frac{6}{fan\_infan\_out}}fan_infan_out6fan_infan\_infan_in是输入神经元个数fan_outfan\_outfan_out是输出的神经元个数4.神经网络搭建和参数计算
1模型搭建
在pytorch中定义深度神经网络其实就是层堆叠的过程继承自nn.Module实现两个方法
_init\_ 方法中定义网络中的层结构主要是全连接层并进行初始化forward方法在实例化模型的时候底层会自动调用该函数。该函数中可以定义学习率为初始化定义的layer传入数据等。2网络参数量的统计方法
统计每一层中的权重w和偏置b的数量
from torchsummary import summary
……
summary(my_modelll, input_size(3, ), batch_size 8)for name, para in my_model.named_parameters():print(name)print(para)5.神经网络优缺点
优点
精度高性能优于其他机器学习方法甚至在某些领域超过了人类可以近似任意的非线性函数随之计算机硬件的发展近年来在学界和业界受到了热捧有大量的框架和库可调
缺点
黑箱很难解释模型是怎么工作的训练时间长需要大量的算力网络结构复杂需要调整超参数小数据集上表现不佳容易发生过拟合