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

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

订阅专栏

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

一、基本概念

神经网络的基本构成


输入层


图中粉色的部分(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即可。


相关文章
|
20天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
16天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
45 1
|
21天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
46 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
17天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
31 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
1天前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习入门案例:运用神经网络实现价格分类
深度学习入门案例:运用神经网络实现价格分类
|
9天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第31天】本文旨在通过浅显易懂的语言和直观的比喻,为初学者揭开深度学习中卷积神经网络(CNN)的神秘面纱。我们将从CNN的基本原理出发,逐步深入到其在图像识别领域的实际应用,并通过一个简单的代码示例,展示如何利用CNN进行图像分类。无论你是编程新手还是深度学习的初学者,这篇文章都将为你打开一扇通往人工智能世界的大门。
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)入门与实践
【8月更文挑战第62天】本文以浅显易懂的方式介绍了深度学习领域中的核心技术之一——卷积神经网络(CNN)。文章通过生动的比喻和直观的图示,逐步揭示了CNN的工作原理和应用场景。同时,结合具体的代码示例,引导读者从零开始构建一个简单的CNN模型,实现对图像数据的分类任务。无论你是深度学习的初学者还是希望巩固理解的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络背后的原理与实践
【9月更文挑战第29天】本文将带你深入理解深度学习的核心概念,从基础理论到实际应用,逐步揭示其神秘面纱。我们将探讨神经网络的工作原理,并通过实际代码示例,展示如何构建和训练一个简单的深度学习模型。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能。
24 2
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习与神经网络:探索复杂数据的表示
【9月更文挑战第26天】深度学习作为人工智能领域的明珠,通过神经网络自动从大数据中提取高级特征,实现分类、回归等任务。本文介绍深度学习的基础、张量表示、非线性变换、反向传播及梯度下降算法,并探讨其在计算机视觉、自然语言处理等领域的应用与挑战。未来,深度学习将更加智能化,揭示数据背后的奥秘。
|
17天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
37 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台