DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络

简介: 介绍DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录。另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程笔记(CSDN)系列笔记中都有提到,所以这里不再赘述。

介绍
DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录。
另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程笔记(CSDN)系列笔记中都有提到,所以这里不再赘述。

另外本系列课程也设有Jupyter Notebook形式练手项目,具体的可跳转至Coursera深度学习(DeepLearning.ai)课程习题--Python学习。

1、神经网络概要

img_c003edc51b00497c50b981f792ac2053.png

注意:这一系列的课程中用中括号表示层数,例如\(a^{[1]}\)表示第二层(隐藏层)的数据。

2、神经网络表示

img_f74ea29ee4c8ced8485029af8bdfd589.png
这个图的内容有点多,跟着下面的步骤来理解这个图吧:

  • 首先看蓝色字体,这个2层的神经网络(输入层一般理解成第0层)有输入层(input layer)、隐藏层(Hidden layer)、输出层(output layer)组成

  • 再看紫色字体,每一层用\(a^{[i]}, i=0,1...n\)表示,\(a^{[0]}\)表示输入层的所有数据。而下标则表示某一层的某一行的具体的数据,例如\(a^{[1]}_1\)表示隐藏层的第一个元素。

  • 最后是绿色字体,介绍的分别是\(w\)(权重)和\(b\)(偏置),其中\(w^{[1]}\)表示输入层到隐藏层的权重,其是(4,3)的矩阵,而\(b^{[1]}\)是(4,1)的矩阵。

3、计算神经网络的输出

img_9d108ae7a7c96caf7a4db4a697d1cc6a.png
这个比较简单就不做过多解释了,主要就是线性代数的知识。

4、多个例子中的向量化

还是以上面的神经网络为模型进行介绍,向量化过程如下:
for i in range(m):
\(\quad \quad z^{[1](i)}=W^{[1]}x^{(i)}+b^{[1]}\)
\(\quad \quad a^{[1](i)}=σ(z^{[1](i)})\)
\(\quad \quad z^{[2](i)}=W^{[2]}x^{(i)}+b^{[2]}\)
\(\quad \quad a^{[2](i)}=σ(z^{[2](i)})\)

5、向量化实现的解释

上一节中使用了for循环和矩阵向量机,这里可以更加彻底地向量化,让运算更加简单,如下:
\(Z^{[1]}=W^{[1]}X+b^{[1]}\)
\(A^{[1]}=σ(Z^{[1]})\)
\(Z^{[2]}=W^{[2]}X+b^{[2]}\)
\(A^{[2]}=σ(Z^{[2]})\)

6、激活函数

img_4d84ab5f3adaddf4608c41813f8b84c8.png
常用的一共四个激活函数

  • (1): \(σ(z)=\frac{1}{1+e^{-z}}\),一般只用在二元分类的输出层,因为二元分类一般要求输出结果\(y∈{0,1}\),而σ函数刚好其阈值就在0,1之间。而其它层更加建议用其他的激活函数。所以一个神经网络可以使用多种激活函数(用\(g^{[i]}\)表示第i层的激活函数)

  • (2): \(tanh(z) = \frac{e^z-e^{-z}}{e^z+e^{-z}}\),上下界限分别是1-1。它相比于\(σ(z)\)表现更好的原因是因为它的均值在0附近,有数据中心化的效果,所以下一层在学习的时候要更加方便和快速。但是\(σ(z)\)\(tanh(z)\)有一个共同的缺点,就是当z很大或很小的时候,它们的斜率就会趋向于0,这会使得梯度下降的学习速率降低。

  • (3): ReLu(The Rectified Linear Unit) 表达式是\(f(x)=max(0,x)\),它表现的效果是最好的,所以在不确定使用何种激活函数的时候就可以不顾一切的选择它~(难道这就是传说中的备胎?)
    相比sigmoid和tanh函数,Relu激活函数的优点在于:
    • 梯度不饱和。梯度计算公式为:1{x>0}。因此在反向传播过程中,减轻了梯度弥散的问题,神经网络前几层的参数也可以很快的更新。

    • 计算速度快。正向传播过程中,sigmoid和tanh函数计算激活值时需要计算指数,而Relu函数仅需要设置阈值。如果x<0,f(x)=0,如果x>0,f(x)=x。加快了正向传播的计算速度。
      因此,Relu激活函数可以极大地加快收敛速度,相比tanh函数,收敛速度可以加快6倍

  • (4): Leaky Relu,你也许发现了Relu激活函数在当z小于0的时候导数为0,虽然这在实践中并不影响,但是为了进一步优化提出了Leaky Relu,在z小于0时导数不为0.表达式一般为\(f(x)=max(0.01x,x)\)。其中0.01是一个可调的参数,类似于学习步长α

7、为什么需要非线性激活函数

如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与只有一个隐藏层效果相当,这种情况就是多层感知机(MLP)了。
正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。

8、激活函数的导数

  • \(σ'(z)=σ(z)(1-σ(z))\)
  • \(tanh'(z)=1-(tanh(z))^2\)
  • Relu:
    • \(Relu'(z) =1 \ when\ z≥0;\)
    • \(Relu'(z) = 0 \ when \ z<0\)

9、神经网络的梯度下降法

10、直观理解反向传播

img_e91ff152d05f63929007a7c84e939507.png
9、10节的内容都是介绍的神经网络的计算过程,更加详细的可以参看Andrew Ng机器学习课程笔记--week5(上)(神经网络损失函数&反向传播算法)

11、随机初始化

在神经网络中,如果将参数全部初始化为0 会导致一个问题,例如对于上面的神经网络的例子,如果将参数全部初始化为0,在每轮参数更新的时候,与输入单元相关的两个隐藏单元的结果将是相同的,既:

img_08525788e791ffdf1abc05fb93979517.png
\(a_1^{(2)}=a_2^{(2)}\)这个问题又称之为对称的权重问题,因此我们需要打破这种对称,这里提供一种随机初始化参数向量的方法: 初始化\(θ_{ij}^{(l)}\)为一个落在 [-ε,ε]区间内的随机数, 可以很小,但是与上面梯度检验( Gradient Checking)中的ε没有任何关系。

更加详细的介绍可参看Andrew Ng机器学习课程笔记--week5(下)(梯度检测&BP随机初始化)


参考资料:
Deep learning系列(七)激活函数
神经网络为什么要有激活函数,为什么relu 能够防止梯度消失







MARSGGBO原创





2017-8-30



目录
相关文章
|
14天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:理解神经网络与反向传播算法
【9月更文挑战第20天】本文将深入浅出地介绍深度学习中的基石—神经网络,以及背后的魔法—反向传播算法。我们将通过直观的例子和简单的数学公式,带你领略这一技术的魅力。无论你是编程新手,还是有一定基础的开发者,这篇文章都将为你打开深度学习的大门,让你对神经网络的工作原理有一个清晰的认识。
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
36 1
|
11天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
23 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
3天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第31天】本文旨在通过浅显易懂的语言和直观的比喻,为初学者揭开深度学习中卷积神经网络(CNN)的神秘面纱。我们将从CNN的基本原理出发,逐步深入到其在图像识别领域的实际应用,并通过一个简单的代码示例,展示如何利用CNN进行图像分类。无论你是编程新手还是深度学习的初学者,这篇文章都将为你打开一扇通往人工智能世界的大门。
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)入门与实践
【8月更文挑战第62天】本文以浅显易懂的方式介绍了深度学习领域中的核心技术之一——卷积神经网络(CNN)。文章通过生动的比喻和直观的图示,逐步揭示了CNN的工作原理和应用场景。同时,结合具体的代码示例,引导读者从零开始构建一个简单的CNN模型,实现对图像数据的分类任务。无论你是深度学习的初学者还是希望巩固理解的开发者,这篇文章都将为你打开一扇通往深度学习世界的大门。
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习还不如浅层网络?RL教父Sutton持续反向传播算法登Nature
【9月更文挑战第24天】近年来,深度学习在人工智能领域取得巨大成功,但在连续学习任务中面临“损失可塑性”问题,尤其在深度强化学习中更为突出。加拿大阿尔伯塔大学的研究人员提出了一种名为“持续反向传播”的算法,通过选择性地重新初始化网络中的低效用单元,保持模型的可塑性。该算法通过评估每个连接和权重的贡献效用来决定是否重新初始化隐藏单元,并引入成熟度阈值保护新单元。实验表明,该算法能显著提升连续学习任务的表现,尤其在深度强化学习领域效果明显。然而,算法也存在计算复杂性和成熟度阈值设置等问题。
25 2
|
11天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
31 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
5天前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的信息安全新挑战
【9月更文挑战第29天】在数字化浪潮的推动下,云计算服务如雨后春笋般涌现,为各行各业提供了前所未有的便利和效率。然而,随着数据和服务的云端化,网络安全问题也日益凸显,成为制约云计算发展的关键因素之一。本文将从技术角度出发,探讨云计算环境下网络安全的重要性,分析云服务中存在的安全风险,并提出相应的防护措施。我们将通过实际案例,揭示如何在享受云计算带来的便捷的同时,确保数据的安全性和完整性。
|
2天前
|
安全 网络协议 网络安全
网络安全与信息安全:漏洞、加密与意识的三重奏
【9月更文挑战第32天】在数字世界的交响乐中,网络安全是那不可或缺的乐章。本文将带您深入探索网络安全的三大主题:网络漏洞的识别与防范、加密技术的奥秘以及安全意识的重要性。通过深入浅出的方式,我们将一起揭开这些概念的神秘面纱,并学习如何在实际生活中应用它们来保护自己的数字足迹。让我们开始这场既刺激又富有教育意义的旅程,提升个人和组织的网络安全防御能力。
|
1天前
|
存储 安全 算法
网络安全与信息安全:漏洞、加密与意识的三维防线
【9月更文挑战第33天】在数字化浪潮中,网络安全与信息安全成为守护数据宝藏的坚固盾牌。本文将深入探讨网络防御的三大支柱:安全漏洞的识别与防范,加密技术的应用和原理,以及提升个人和组织的安全意识。通过这些知识的分享,我们旨在为读者提供一套全面的网络安全策略,确保数字资产的安全无虞。
下一篇
无影云桌面