首页 > 其他分享 >c1w4_深层神经网络

c1w4_深层神经网络

时间:2023-11-17 17:12:03浏览次数:33  
标签:layer -- c1w4 神经网络 深层 参数 quad

深层神经网络

什么是深层神经网络?

深层的神经网络(Deep L-layer neural network)就是包含了更多隐藏层的神经网络。

从某种意义上来说,logistic regression可以称为一层的神经网络“1 layer NN”。当计算神经网络的层数,通常将输出层计算在内,而输出层不算,有一个隐藏层,就是2 layer NN,以此类推。当有很多的隐藏层就属于是深层的神经网络。

image

通过复杂的函数构造深层神经网络,可以学习到更多浅层网络模型注意不到的特征。

实际上当面对一些具体问题时,无法事先知道需要多深的神经网络模型。所以可以先试一试logistic regression,然后不断增加隐藏层,根据交叉验证结果取评估具体选择多少隐藏层。所以,可以把隐藏层的数量当作另一个可以自由选择数值大小的超参数。

深层神经网络的符号

深层神经网络的符号,l代表层数,n[l]代表l层的神经单元个数,a[l]代表l层的激活函数,W[l]代表l层的权重参数,b[l]代表l层的偏置参数。a[l]=g[l](z[l])

image

在上述例子上,l=4,n[1]=5,n[2]=5,n[3]=3,n[4]=1

深层神经网络的正向传播

image

对于上面的例子,正向传播的计算如下。对于第l层的z[l],就是这一层的权重参数W[l]乘上一层激活函数的输出a[l-1]加上这层的偏置b[l]

\[z^{[1]} = W^{[1]}a^{[0]}+b^{[1]};\quad a^{[1]}=g^{[1]}(z^{[1]})\quad --\quad Z^{[1]}=W^{[1]}A{[0]}+b^{[1]};\quad A^{[1]}=g^{[1](Z^{[1]})}\\ z^{[2]} = W^{[2]}a^{[1]}+b^{[2]};\quad a^{[2]}=g^{[2]}(z^{[2]})\quad --\quad Z^{[2]}=W^{[2]}A{[1]}+b^{[2]};\quad A^{[2]}=g^{[2](Z^{[2]})}\\ z^{[3]} = W^{[3]}a^{[2]}+b^{[3]};\quad a^{[3]}=g^{[3]}(z^{[2]})\quad --\quad Z^{[3]}=W^{[3]}A{[2]}+b^{[3]};\quad A^{[3]}=g^{[3](Z^{[3]})}\\ z^{[4]} = W^{[4]}a^{[3]}+b^{[4]};\quad a^{[4]}=g^{[2]}(z^{[4]})\quad --\quad Z^{[4]}=W^{[4]}A{[3]}+b^{[4]};\quad A^{[4]}=g^{[4](Z^{[4]})}\\ \]

由此可以归纳推导出对于第l层的正向传播公式如下。在代码中通过使用for循环,遍历layer来实现对每一层正向传播的计算。

\[z^{[l]} = W^{[l]}a^{[l-1]}+b^{[l]};\quad a^{[l]}=g^{[l]}(z^{[l]})\quad --\quad Z^{[l]}=W^{[l]}A{[l-1]}+b^{[l]};\quad A^{[l]}=g^{[l]}(Z^{[l]})\\ \]

这些步骤就是将前面浅层神经网络的步骤多重复几遍。

对矩阵维度的考虑

对于矩阵的维度,通过一个例子来推导出对于第l层的运算中z[l],W[l]、a[l-1]、b[l]的维度大小。

image

image

导数也和原矩阵的维度一样;在进行向量化转变以后,参数W和b的维度保持不变

\[w^{[l]}:(n^{[l]},n^{[l-1]})-dw^{[l]}:(n^{[l]},n^{[l-1]})\\ b^{[l]}:(n^{[l]},1)-db^{[l]}:(n^{[l]},1)\\ z^{[l]}:(n^{[l]},1)-Z^{[l]}:(n^{[l]},m)-dZ^{[l]}:(n^{[l]},m)\\ a^{[l]}:(n^{[l]},1)-A^{[l]}:(n^{[l]},m)-dA^{[l]}:(n^{[l]},m)\\ \]

为什么使用深层表示

在图像处理领域,深层神经网络随着层数由浅到深,神经网络提取的特征也是从边缘到局部特征到整体,由简单到复杂。如果隐藏层足够多,那么能够提取的特征就越丰富、越复杂,模型的准确率就会越高。

在语音识别领域,浅层的神经元能够检测一些简单的音调,然后较深的神经元能够检测出基本的音素,更深的神经元就能够检测出单词信息。如果网络够深,还能对短语、句子进行检测。

通过神经网络输入如下这样的y,通过deep layer NN,这样一个过程的神经单元的数量级是O(logn);而如果使用shallow layer NN,那么对应的神经单元的数量级是O(2n)。不难看出如当使用较浅层的神经网络那么需要的神经单元的数量就会很多。

image

Forward and backward的公式

forward

输入:a[l-1]

输出:a[l]

缓存:z[l]、W[l]、b[l]

\[z^{[l]} = W^{[l]}a^{[l-1]}+b^{[l]};\quad a^{[l]}=g^{[l]}(z^{[l]})\\ Z^{[l]}=W^{[l]}A{[l-1]}+b^{[l]};\quad A^{[l]}=g^{[l]}(Z^{[l]})\\ \]

backforward

输入:da[l]

输出:da[l-1]、dW[l]、db[l]

\[dz^{[l]}=da^{[l]}*g^{[l]}(z^{[l]})--dZ^{[l]}=dA^{[l]}*g^{[l]}(Z^{[l]})\\ dW^{[l]}=dz^{[l]}*a^{[l-1].T}--dW^{[l]}=\frac{1}{m}*dZ^{[l]}*A^{[l-1].T}\\ db^{[l]}=dz^{[l]}--db^{[l]}=\frac{1}{m}*np.sum(dZ^{[l]},axis=1,keepdims=True)\\ da^{[l-1]}=W^{[l].T}*dz^{[l]}--dA^{[l-1]}=W^{[l].T}*dZ^{[l]} \]

Build a deep network

image

image

参数和超参数

参数:模型可以根据数据主动学习出的变量。比如权重参数W和偏置参数b。

超参数:超参数就是用来确定模型的参数。超参数不同,模型是不同的,那么参数也会发生相应的改变。一般通过大量的实验,根据实验结果来确定参数,也可以说是”玄学“QAQ。超参数有:学习速率\(\alpha\)、梯度下降的迭代次数、隐藏层的数量、隐藏单元的数量以及激活函数的选择等等。

对不同使用不同超参数的模型产生的结果进行评估,选择最适合的大小。

深度学习和人脑的关联性:老师说没啥大关系(not a whole lot)。balabala

标签:layer,--,c1w4,神经网络,深层,参数,quad
From: https://www.cnblogs.com/newbe3three/p/17839134.html

相关文章

  • 深度学习算法原理实现——自写神经网络识别mnist手写数字和训练模型
    代码来自:https://weread.qq.com/web/reader/33f32c90813ab71c6g018fffkd3d322001ad3d9446802347《python深度学习》fromtensorflow.keras.datasetsimportmnistfromtensorflow.kerasimportoptimizersimporttensorflowastfimportnumpyasnpclassNaiveDense:d......
  • Python绘制神经网络模型的结构示意图的方法
      本文介绍基于Python语言,对神经网络模型的结构进行可视化绘图的方法。  最近需要进行神经网络结构模型的可视化绘图工作。查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块,就需要手动用DOT语言进行图片描述,比较花时间;最终,发现利用第三方的ann_visualizer模块,可......
  • 神经网络中的量化与蒸馏
    前言 本文介绍了深度学习中精简模型的技术:量化和蒸馏。本文转载自DeepHubIMBA作者:Aadityaura仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【......
  • python深度学习——一个简单的全连接神经网络,预测mnist手写数字
    代码来自《python深度学习》第二章:fromtensorflow.keras.datasetsimportmnistfromtensorflowimportkerasfromtensorflow.kerasimportlayers(train_images,train_labels),(test_images,test_labels)=mnist.load_data()print(train_images.shape)print(len(trai......
  • Python 获取指定目录所有深层文件路径(包括子目录下的所有文件)
    importosdefget_all_deep_files_in_folder(folder_path):all_files=[]file_paths=os.listdir(folder_path)foriteminfile_paths:fp=os.path.join(folder_path,item)ifos.path.isfile(fp):all_files.append(fp)......
  • 不平衡数据集神经网络回归SMOTE、SMOGN算法:R语言代码
      本文介绍基于R语言中的UBL包,读取.csv格式的Excel表格文件,实现SMOTE算法与SMOGN算法,对机器学习、深度学习回归中,训练数据集不平衡的情况加以解决的具体方法。  在之前的文章SMOGN算法的Python实现:不平衡数据的深度学习回归中,我们介绍了基于Python语言中的smogn包,实现SMOGN算......
  • 机器学习——深度循环神经网络
    到目前为止,我们只讨论了具有一个单向隐藏层的循环神经网络。其中,隐变量和观测值与具体的函数形式的交互方式是相当随意的。只要交互类型建模具有足够的灵活性,这就不是一个大问题。然而,对一个单层来说,这可能具有相当的挑战性。之前在线性模型中,我们通过添加更多的层来解决这个......
  • 神经网络中间层特征图可视化(输入为音频)
    importlibrosaimportnumpyasnpimportutilsimporttorchimporttorch.nn.functionalasFfrommatplotlibimportpyplotaspltfromtorchvision.models.feature_extractionimportcreate_feature_extractordevice=torch.device("cuda:0"iftorch.......
  • 神经网络入门篇:详解向量化实现的解释(Justification for vectorized implementation)
    向量化实现的解释先对几个样本计算一下前向传播,看看有什么规律:公式1.16:\(z^{[1](1)}=W^{[1]}x^{(1)}+b^{[1]}\)\(z^{[1](2)}=W^{[1]}x^{(2)}+b^{[1]}\)\(z^{[1](3)}=W^{[1]}x^{(3)}+b^{[1]}\)这里,为了描述的简便,先忽略掉\(b^{[1]}\)后面将会看到利用Python的......
  • 神经网络中的量化与蒸馏
    本文将深入研究深度学习中精简模型的技术:量化和蒸馏深度学习模型,特别是那些具有大量参数的模型,在资源受限环境中的部署几乎是不可能的。所以就出现了两种流行的技术,量化和蒸馏,它们都是可以使模型更加轻量级,而不会对性能造成太大影响。但是它们需要什么,它们又如何比较呢?量化:牺......