人工智能:深层神经网络

简介: 人工智能:深层神经网络

为什么使用深层网络



对于人脸识别等应用,神经网络的第一层从原始图片中提取人脸的轮廓和边缘,每个神经元学习到不同边缘的信息;网络的第二层将第一层学得的边缘信息组合起来,形成人脸的一些局部的特征,例如眼睛、嘴巴等;后面的几层逐步将上一层的特征组合起来,形成人脸的模样。随着神经网络层数的增加,特征也从原来的边缘逐步扩展为人脸的整体,由整体到局部,由简单到复杂。层数越多,那么模型学习的效果也就越精确。


通过例子可以看到,随着神经网络的深度加深,模型能学习到更加复杂的问题,功能也更加强大。


1.4.1 深层神经网络表示



1.4.1.1 什么是深层网络?


image.png


使用浅层网络的时候很多分类等问题得不到很好的解决,所以需要深层的网络。


1.4.2 四层网络的前向传播与反向传播



image.png


在这里首先对每层的符号进行一个确定,我们设置L为第几层,n为每一层的个数,L=[L1,L2,L3,L4],n=[5,5,3,1]


1.4.2.1 前向传播


首先还是以单个样本来进行表示,每层经过线性计算和激活函数两步计算


z^{[1]} = W^{[1]}x+b^{[1]}, a^{[1]}=g^{[1]}(z^{[1]})z[1]=W[1]x+b[1],a[1]=g[1](z[1]), 输入xx, 输出a^{[1]}a[1]


z^{[2]} = W^{[2]}a^{[1]}+b^{[2]}, a^{[2]}=g^{[2]}(z^{[2]})z[2]=W[2]a[1]+b[2],a[2]=g[2](z[2]),输入a^{[1]}a[1], 输出a^{[2]}a[2]


z^{[3]} = W^{[3]}a^{[2]}+b^{[3]},a^{[3]}=g^{[3]}(z^{[3]})z[3]=W[3]a[2]+b[3],a[3]=g[3](z[3]), 输入a^{[2]}a[2], 输出a^{[3]}a[3]


z^{[4]} = W^{[4]}a^{[3]}+b^{[4]},a^{[4]}=\sigma(z^{[4]})z[4]=W[4]a[3]+b[4],a[4]=σ(z[4]), 输入a^{[3]}a[3], 输出a^{[4]}a[4]


我们将上式简单的用通用公式表达出来,x = a^{[0]}x=a[0]


z^{[L]} = W^{[L]}a^{[L-1]}+b^{[L]}, a^{[L]}=g^{[L]}(z^{[L]})z[L]=W[L]a[L−1]+b[L],a[L]=g[L](z[L]), 输入a^{[L-1]}a[L−1], 输出a^{[L]}a[L]


m个样本的向量表示


Z^{[L]} = W^{[L]}A^{[L-1]}+b^{[L]}Z[L]=W[L]A[L−1]+b[L]
A^{[L]}=g^{[L]}(Z^{[L]})A[L]=g[L](Z[L])
输入a^{[L-1]}a[L−1], 输出a^{[L]}a[L]


1.4.2.2 反向传播


因为涉及到的层数较多,所以我们通过一个图来表示反向的过程


image.png


  • 反向传播的结果(理解)


单个样本的反向传播:


dZ^{[l]}=\frac{dJ}{da^{[l]}}\frac{da^{[l]}}{dZ^{[l]}}=da^{[l]}*g^{[l]}{'}(Z^{[l]})dZ[l]=da[l]dJdZ[l]da[l]=da[l]∗g[l]′(Z[l])
dW^{[l]}=\frac{dJ}{dZ^{[l]}}\frac{dZ^{[l]}}{dW^{[l]}}=dZ^{[l]}\cdot a^{[l-1]}dW[l]=dZ[l]dJdW[l]dZ[l]=dZ[l]⋅a[l−1]
db^{[l]}=\frac{dJ}{dZ^{[l]}}\frac{dZ^{[l]}}{db^{[l]}}=dZ^{[l]}db[l]=dZ[l]dJdb[l]dZ[l]=dZ[l]
da^{[l-1]}=W^{[l]T}\cdot dZ^{[l]}da[l−1]=W[l]T⋅dZ[l]


多个样本的反向传播


dZ^{[l]}=dA^{[l]}*g^{[l]}{'}(Z^{[l]})dZ[l]=dA[l]∗g[l]′(Z[l])
dW^{[l]}=\frac{1}{m}dZ^{[l]}\cdot {A^{[l-1]}}^{T}dW[l]=m1dZ[l]⋅A[l−1]T
db^{[l]}=\frac{1}{m}np.sum(dZ^{[l]},axis=1)db[l]=m1np.sum(dZ[l],axis=1)
dA^{[l]}=W^{[l+1]T}\cdot dZ^{[l+1]}dA[l]=W[l+1]T⋅dZ[l+1]


1.4.3 参数与超参数



1.4.3.1 参数


参数即是我们在过程中想要模型学习到的信息(模型自己能计算出来的),例如 W[l]W[l],b[l]b[l]。而超参数(hyper parameters)即为控制参数的输出值的一些网络信息(需要人经验判断)。超参数的改变会导致最终得到的参数 W[l],b[l] 的改变。


1.4.3.2 超参数


典型的超参数有:


  • 学习速率:α
  • 迭代次数:N
  • 隐藏层的层数:L
  • 每一层的神经元个数:n[1],n[2],...
  • 激活函数 g(z) 的选择


当开发新应用时,预先很难准确知道超参数的最优值应该是什么。因此,通常需要尝试很多不同的值。应用深度学习领域是一个很大程度基于经验的过程。


1.4.3.3 参数初始化


  • 为什么要随机初始化权重


如果在初始时将两个隐藏神经元的参数设置为相同的大小,那么两个隐藏神经元对输出单元的影响也是相同的,通过反向梯度下降去进行计算的时候,会得到同样的梯度大小,所以在经过多次迭代后,两个隐藏层单位仍然是对称的。无论设置多少个隐藏单元,其最终的影响都是相同的,那么多个隐藏神经元就没有了意义。


在初始化的时候,W 参数要进行随机初始化,不可以设置为 0。b 因为不存在上述问题,可以设置为 0。


以 2 个输入,2 个隐藏神经元为例:


W = np.random.rand(2,2)* 0.01
b = np.zeros((2,1))


  • 初始化权重的值选择


这里将 W 的值乘以 0.01(或者其他的常数值)的原因是为了使得权重 W 初始化为较小的值,这是因为使用 sigmoid 函数或者 tanh 函数作为激活函数时,W 比较小,则 Z=WX+b 所得的值趋近于 0,梯度较大,能够提高算法的更新速度。而如果 W 设置的太大的话,得到的梯度较小,训练过程因此会变得很慢。


ReLU 和 Leaky ReLU 作为激活函数时不存在这种问题,因为在大于 0 的时候,梯度均为 1。


目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 自动驾驶
什么是人工智能领域的卷积神经网络
什么是人工智能领域的卷积神经网络
|
7天前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
86 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
7天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
130 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
8天前
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
101 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
|
12天前
|
机器学习/深度学习 人工智能 安全
人工智能在网络安全中的入侵检测与防御
人工智能在网络安全中的入侵检测与防御
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能在网络安全中的威胁情报分析与响应的应用
人工智能在网络安全中的威胁情报分析与响应的应用
|
27天前
|
机器学习/深度学习 算法 TensorFlow
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
谷物识别系统,本系统使用Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经算法网络模型,通过对11种谷物图片数据集('大米', '小米', '燕麦', '玉米渣', '红豆', '绿豆', '花生仁', '荞麦', '黄豆', '黑米', '黑豆')进行训练,得到一个进度较高的H5格式的模型文件。然后使用Django框架搭建了一个Web网页端可视化操作界面。实现用户上传一张图片识别其名称。
67 0
【图像识别】谷物识别系统Python+人工智能深度学习+TensorFlow+卷积算法网络模型+图像识别
|
1月前
|
机器学习/深度学习 人工智能 算法
食物识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
食物识别系统采用TensorFlow的ResNet50模型,训练了包含11类食物的数据集,生成高精度H5模型。系统整合Django框架,提供网页平台,用户可上传图片进行食物识别。效果图片展示成功识别各类食物。[查看演示视频、代码及安装指南](https://www.yuque.com/ziwu/yygu3z/yhd6a7vai4o9iuys?singleDoc#)。项目利用深度学习的卷积神经网络(CNN),其局部感受野和权重共享机制适于图像识别,广泛应用于医疗图像分析等领域。示例代码展示了一个使用TensorFlow训练的简单CNN模型,用于MNIST手写数字识别。
70 3
|
1月前
|
机器学习/深度学习 人工智能 安全
【AI 初识】人工智能如何用于欺诈检测和网络安全?
【5月更文挑战第3天】【AI 初识】人工智能如何用于欺诈检测和网络安全?
|
30天前
|
机器学习/深度学习 人工智能 算法
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
66 0

热门文章

最新文章