瞎聊深度学习——神经网络基础(概念,正则化)

简介: 瞎聊深度学习——神经网络基础(概念,正则化)

订阅专栏

神经网络是深度学习中最重要的一类模型,本文来讲解一下神经网络基础。

一、基本概念

神经网络的基本构成


输入层


图中粉色的部分(input layer)是输入层,输入层在神经网络中主要起到输入数据的作用,是一个神经网络的入口。


隐藏层


图中蓝色的部分(hidden layer)是隐藏层,我们叫他为隐藏层因为我们并不能够在训练样本中观测到他们的值,隐藏层的主要作用是把输入数据的特征,经过隐藏层中激活函数的计算,抽象到另一个维度空间,来展现其更抽象化的特征,这些特征能更好的进行线性划分,隐藏层可以有一层也可以有多层,同时每一层神经元(图中每个白色的圆)的个数也可多可少。


输出层


图中绿色的部分(ouput layer)是输出层,输出层同样也会通过一个激活函数将经过多层(或者一层)隐藏层计算过的数据再次经过计算得到我们预期的输出,通常使用softmax函数。


网络层数


网络层数也就是我们通常说的几层神经网络,在计算网络层数时,我们只需计算参与了计算的层数(也就是隐藏层和输出层的层数),例如上图有两层隐藏层和一层输出层,我们就可以把该神经网络的层数记做三层。


激活函数


激活函数是我们添加在计算层的函数,在计算层中每一层都会将前一层的输入数据通过激活函数的计算转化为新的输入数据输入给下一层进行计算,常用的激活函数有sigmoid、Tanh、ReLu、leaky ReLu、Maxout、Softmax等。


二、前馈神经网络

神经网络中最简单最朴素的神经网络我们称之为前馈神经网络,该神经网络中,各神经元从输入层开始接收前一级的输入,并输入到下一层,直至输出,整个网络中无反馈,可用一个有向无环图来表示。


通常我们说的前馈神经网络有两种:一种叫Back Propagation Networks——反向传播网络(BP网络),一种叫RBF Network——径向基函数神经网络。


BP网络的主要思想在于对结果进行前向传播,对误差采用反向传播,在反向传播的过程中通过最优化各层神经元的输入权值以及偏置,使得神经网络的输出尽可能地接近期望输出,以达到训练(或者学习)的目的。


RBF网络的基本思想是:用RBF作为隐单元的“基”构成隐含层空间,这样就可以将输入矢量直接映射到隐空间,而不需要通过权连接。当RBF的中心点确定以后,这种映射关系也就确定了。而隐含层空间到输出空间的映射是线性的,即网络的输出是隐单元输出的线性加权和,此处的权即为网络可调参数。其中,隐含层的作用是把向量从低维度的p映射到高维度的h,这样低维度线性不可分的情况到高维度就可以变得线性可分了,主要就是核函数的思想。


由于过程比较复杂本文不对两种网络进行推导。


三、深度学习中的正则化

什么是正则化?


在机器学习中,许多策略被显式地设计来减少测试误差(可能会以增大训练误差为代价),这些策略被统称为正则化,是一种旨在减少泛化误差而不是训练误差的对学习算法的修改。在深度学习的背景下,大多数正则化策略是对估计进行正则化,以偏差的增加换取方差的减少。


说一下常用的正则化方法(本文给出理解,不做具体推导)


1、参数范数惩罚

(1)L2参数正则化


L2正则化(岭回归)在深度学习中通常用于权重衰减,通过向损失函数添加一个正则项12∥w∥2212‖w‖22使得权重更接近于原点(在原来的损失函数基础上加上权重参数的平方和)。

 

(2)L1参数正则化

L1正则化要我们在原始的代价函数后面加上一个L1正则化项。即全部权重w的绝对值的和。


2、数据集增强

数据集增强是一种最简单,也很常用的正则化方法,该方法主要是要求我们在数据集上下功夫。


一种数据增强的方法是去加大数据集,但是在我们的数据集很有限的时候这种方法并不能很好的解决问题,此时我们就可以用有限的数据产生更多的等价数据来达到数据增强的目的,举个例子:


当我们在使用图片的数据集时,可能并不能获得很多高质量的数据,此时我们就想到去将现有的图片进行一些变换(如翻转、随机裁剪、旋转等操作)来得到更多的图片,就像下面这样:


通过此类方法我们就能够将原有的数据数量扩大一定的倍数从而达到了数据增强的目的。


3、噪声添加

对于部分模型来说,在输入中添加一些方差极小的噪声等价于对权重施以权重惩罚,通常情况下注入噪声远比简单地收缩参数强大,噪声被添加到隐藏单元时会更加强大。


4、Dropout

当一个神经网络的结构过于复杂(有很多的隐藏层,每层都有很多的神经元)时,我们的模型就很容易产生过拟合的现象,为了防止这种现象的发生,产生了一种常用的正则化方法——Dropout。


Dropout的工作流程如下:

(1)首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变;

12.jpeg

(2)然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b);


(3) 然后继续重复这一过程:


恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)。


从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。


对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。


不断重复这一过程。


对于如何停止一半的神经元,我们在使用激活函数的时候,给出一定的概率使得经过激活函数计算后的结果为0即可。


相关文章
|
机器学习/深度学习 人工智能 运维
网管不再抓头发:深度学习教你提前发现网络事故
网管不再抓头发:深度学习教你提前发现网络事故
336 2
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
1582 55
|
机器学习/深度学习 人工智能 供应链
从概念到商业价值:AI、机器学习与深度学习全景指南
在这个科技飞速发展的时代🚀,人工智能正以惊人的速度渗透到我们的生活和工作中👀。但面对铺天盖地的AI术语和概念,很多人感到困惑不已😣。"AI"、"机器学习"、"深度学习"和"神经网络"到底有什么区别?它们如何相互关联?如何利用这些技术提升工作效率和创造价值?
743 0
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
801 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
机器学习/深度学习 人工智能 算法
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
Wi-Fi老是卡?不如试试让“深度学习”来当网络管家!
548 68
|
10月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
机器学习/深度学习 数据可视化 算法
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
神经常微分方程(Neural ODEs)是深度学习领域的创新模型,将神经网络的离散变换扩展为连续时间动力系统。本文基于Torchdyn库介绍Neural ODE的实现与训练方法,涵盖数据集构建、模型构建、基于PyTorch Lightning的训练及实验结果可视化等内容。Torchdyn支持多种数值求解算法和高级特性,适用于生成模型、时间序列分析等领域。
828 77
PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
|
机器学习/深度学习 算法 数据库
基于GoogleNet深度学习网络和GEI步态能量提取的步态识别算法matlab仿真,数据库采用CASIA库
本项目基于GoogleNet深度学习网络与GEI步态能量图提取技术,实现高精度步态识别。采用CASI库训练模型,结合Inception模块多尺度特征提取与GEI图像能量整合,提升识别稳定性与准确率,适用于智能安防、身份验证等领域。
|
机器学习/深度学习 人工智能 运维
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
AI“捕风捉影”:深度学习如何让网络事件检测更智能?
626 8
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
1507 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能

热门文章

最新文章