吴恩达DeepLearningCourse1-神经网络和深度学习

计划在9月4日(截止日期)之前完成DeepLearning的所有课程学习。每个课程对应一篇博客,根据学习进度随时更新。
参考课程

文章目录

    • (一)深度学习概论
            • 结构化数据和非结构化数据
            • 提高效果的方法
    • (二)神经网络基础
            • 二分分类
            • Logistic回归
            • 梯度下降法
            • 计算图、计算图的导数计算
            • Logistic回归中的梯度下降法
            • 向量化
            • Python广播
    • (三)浅层神经网络
          • 计算神经网络的输出
          • 多样本向量化
          • 激活函数
          • 随机初始化
    • (四)深层神经网络
          • 深层网络中的前向传播
          • 深层网络中的反向传播
          • 核对矩阵的维数、深层神经网络的基本单元
          • 超参数

(一)深度学习概论

结构化数据和非结构化数据

结构化数据是已经清楚定义并组织的数据,如数据库。
非结构化数据不具有结构化特征,如图片、音频等。

提高效果的方法

-训练更大的神经网络
-投入更大规模的标记数据

(二)神经网络基础

二分分类

举例:识别输入图像x中有/没有猫,返回y(有为1,无为0)
图片在计算机中的存储形式

使用向量x存储矩阵中的三组数据,组织成nx1的向量,并将每个向量作为一列组织成整体输入X(一种约定),输出Y则为1xm的向量。

Logistic回归

在二分分类问题中,得到的结果是输入符合要求的期望,因此需要介于0和1之间。采用σ函数满足该限制。

Loss Function:考察单个样本数据和实际结果的接近程度。选择该形式是因为其直观上是凸函数,有唯一极小值,避免非凸函数的多个极值情况,便于求解。

Cost Function:考察样本总体对实际结果的拟合效果。

梯度下降法

初始化w和b,每次选择梯度最大的方向前进,或者停在最终结果处,由于成本函数是凸函数,所以存在唯一极小值。

其中,α代表学习率,即前进步长。

计算图、计算图的导数计算

导数计算采用链式法则从右向左进行,即dJ/da = (dJ/du)*(du/da)

单个训练样本时同理操作。

Logistic回归中的梯度下降法

对代价函数的每个累加项对应求导即可得到偏导值。
图中的J,dw1,dw2,db是累加项,所以最终要除以m。而zi,ai,dzi对应每个训练样本的值。求累加值增量时,采用4中的链式法则的思想。

向量化

向量化避免了在程序中显式使用for循环,有效减少运行时间。
例子中的操作方法:
import numpy
a = numpy.random.rand(1000000)
b = numpy.random.rand(1000000)
c= numpy.dot(a, b)
该操作比for循环计算并累加效率高得多。所以每次需要for循环时,查看numpy中是否有可调用的内置函数,避免使用for循环。
根据以上例子,我理解的向量化是用向量的形式,组织每轮循环中得到的结果,利用numpy内置函数高效地计算出矩阵相乘的结果。
在这里插入图片描述

逆向传播时通过向量化消除了两层的for循环,即在一次步进中没有循环。但如果想要多次迭代,还需在外层添加计数循环。
在这里插入图片描述

Python广播

在矩阵元素的运算(区别于矩阵乘法)中,将规模较小的矩阵(其实是向量)进行若干次复制后,再对对应位置的元素进行运算。

使用assert保证矩阵是预期的形状,如assert(a.shape==(3, 4))。调用reshape方法可以将矩阵保持期望形状,如a = a.reshape(3, 3)。

(三)浅层神经网络

计算神经网络的输出

在这里插入图片描述

以只有一个隐层的神经网络为例。直观上,多层的神经网络是多个单层神经网络的堆叠。
其中的每个节点都经过z = wTx + b, σ(z)的计算,如图所示。
在这里插入图片描述

对0层到1层的计算进行向量化,根据如下公式:
在这里插入图片描述

多样本向量化

将输入样本按列排列,进行向量化操作。此时对应A[i],在垂直方向,这个垂直索引对应于神经网络中的不同节点。例如节点位于矩阵的最左上角对应于激活单元,它是位于第一个训练样本上的第一个隐藏单元。它的下一个值对应于第二个隐藏单元的激活值。当水平扫描,将从第一个训练示例中从第一个隐藏的单元到第二个训练样本,第三个训练样本……
在这里插入图片描述

激活函数

在这里插入图片描述

通常tanh的表现优于sigmoid函数。但有例外情况:在二分类的问题中,对于输出层,因为y的值是 0 或 1,所以想让输出的数值介于 0 和 1 之间,而不是在-1 和+1 之间。所以需要使用 sigmoid 激活函数。
对于上面的例子,可以在隐层使用tanh,输出层使用sigmoid。
ReLU函数是最常用的。
如果不使用激活函数,那么多层的神经网络本质上仍然是一层,此时的隐藏层是多余的。为了构建多层神经网络,必须引入非线性的激活函数。

随机初始化

将各层的w初始化为0,会导致正向传播时的结果相同,从而导致反向传播时的结果也相同,无法起到训练的作用。
为此,应该把w的各个元素初始化为非0的较小的数。因为使用sigmoid或tanh激活函数时,若z过大或过小,会导致斜率趋近于0,降低运行效率。
b初始为0不会产生负面影响。
在这里插入图片描述

(四)深层神经网络

深层网络中的前向传播

有一个隐藏层的神经网络,就是一个两层神经网络。
当计算神经网络的层数时,不算输入层,只算隐藏层和输出层。
前向传播可以归纳为多次迭代:
𝑧[𝑙] = 𝑤[𝑙]𝑎[𝑙−1] + 𝑏[𝑙],
𝑎[𝑙] = 𝑔[𝑙](𝑧[𝑙])。

向量化实现过程可以写成:
𝑍[𝑙] = 𝑊[𝑙]𝑎[𝑙−1] + 𝑏[𝑙],
𝐴[𝑙] = 𝑔[𝑙](𝑍[𝑙]) (𝐴[0] = 𝑋)

深层网络中的反向传播

反向传播的步骤可以写成:
(1)𝑑𝑧[𝑙] = 𝑑𝑎[𝑙]∗ 𝑔[𝑙]′(𝑧[𝑙])
(2)𝑑𝑤[𝑙] = 𝑑𝑧[𝑙]⋅ 𝑎[𝑙−1]
(3)𝑑𝑏[𝑙] = 𝑑𝑧[𝑙]
(4)𝑑𝑎[𝑙−1] = 𝑤[𝑙]𝑇⋅ 𝑑𝑧[𝑙]
(5)𝑑𝑧[𝑙] = 𝑤[𝑙+1]𝑇𝑑𝑧[𝑙+1]⋅ 𝑔[𝑙]′(𝑧[𝑙])
式子(5)由式子(4)带入式子(1)得到,前四个式子就可实现反向函数。
向量化实现过程可以写成:
(6)𝑑𝑍[𝑙] = 𝑑𝐴[𝑙]∗ 𝑔[𝑙]′(𝑍[𝑙])
(7)𝑑𝑊[𝑙] =1/𝑚(𝑑𝑍[𝑙]⋅ 𝐴[𝑙−1]𝑇)
(8)𝑑𝑏[𝑙] =1/𝑚(𝑛𝑝. 𝑠𝑢𝑚(𝑑𝑧[𝑙], 𝑎𝑥𝑖𝑠 = 1, 𝑘𝑒𝑒𝑝𝑑𝑖𝑚𝑠 = 𝑇𝑟𝑢𝑒))
(9)𝑑𝐴[𝑙−1] = 𝑊[𝑙]𝑇. 𝑑𝑍[𝑙]

核对矩阵的维数、深层神经网络的基本单元

建议:使用assert确保矩阵维数符合预期。debug时复现各个矩阵维数。
在这里插入图片描述

在这里插入图片描述

超参数

指能控制参数的参数。如学习率、迭代次数、层数、每层神经元数等。
可以通过尝试的方法确定超参数的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达DeepLearningCourse2-改善深层神经网络:超参数调试、正则化以及优化

文章目录第一周:深度学习的实用层面训练、开发、测试集偏差、方差机器学习基本步骤L2正则化Dropout(随机失活)正则化其它正则化方法正则化输入神经网络的权重初始化梯度检验第二周:优化算法Mini-Batch梯度下降法指数加权平均指数加…

面向监狱编程:一伙人植入木马程序至 559 万部手机,盈利 33 万!

2018 年下半年以来,孙某(上海宏路数据技术股份有限公司副总经理)与苏某(北京亿量科技有限公司法定代表人)商议合作开展锁屏拉起广告业务(通过在用户手机上植入带有木马程序的 SDK,可控制手机在锁…

吴恩达DeepLearningCourse3-结构化机器学习项目

文章目录第一周:机器学习策略1正交化单一数字评估指标满足和优化指标训练/开发/测试集机器学习和人的表现第二周:机器学习策略2进行误差分析修正标注错误的数据使用来自不同分布的数据进行训练和测试数据分布不匹配时的偏差与方差的分析处理数据分布不匹…

程序员过关斩将--搞定秒杀,只需要这几步!!

“灵魂拷问秒杀这种大并发的写场景,直接分库分表开干?应对秒杀活动的流量高峰很难吗?不要拿淘宝级别的秒杀忽悠我秒杀活动特点我敢说凡是做过电商的同学,都会遇到运营展开的秒杀,限时购等“高并发”的活动。市面上也有…

吴恩达DeepLearningCourse4-卷积神经网络

部分内容参考之前的笔记 PyTorch深度学习实践 文章目录第一周:卷积神经网络边缘检测Padding、Stride三维卷积卷积神经网络中的一层池化层第二周:深度卷积网络实例探究残差网络1x1卷积Inception模块和网络卷积神经网络的迁移学习第三周:目标检…

那些鼓吹国内首个.NET 5框架的,该醒醒了!

前两天看过园子里有篇【国内首个 .NET 5 框架 XX 斩获 XXX stars,XXX 发布】,一顿羡慕嫉妒恨啊。我这.net core 3.1才上手没几天,还没用热乎呢,你这.NET 5的框架都出来了。我好难啊!不过难归难咱也得跟上啊。于是一个天高云淡的的…

吴恩达DeepLearningCourse5-序列模型

终于在八月末学完了这门课程,这个月虽然为此不停地忙碌,但每天都在进步也是一种乐趣。 吴恩达教授的课程循序渐进,适合初学者,非常感谢他的辛苦付出。 文章目录第一周:循环序列模型循环神经网络(RNN&#…

IdentityServer4系列 | 客户端凭证模式

一、前言从上一篇关于 快速搭建简易项目中,通过手动或者官方模板的方式简易的实现了我们的IdentityServer授权服务器搭建,并做了相应的配置和UI配置,实现了获取Token方式。而其中我们也注意到了三点就是,有哪些用户(users)可以通过…

数据结构 - 链表

准备重启尘封一年的博客作为学习笔记,看看自己能坚持多久。 最近会记录做过的算法题,语言描述只用于会意,仅供参考。 文章目录0.从尾到头获取链表的值(不是反转链表)1.寻找/删除单链表倒数第k个节点3.寻找单链表的中点…

[读书笔记] 《修炼之道:.NET 开发要点精讲》

《修炼之道:.NET 开发要点精讲》目录《修炼之道:.NET 开发要点精讲》第 1 章 另辟蹊径:解读.NET1.7 本章思考 > 位置 465第 2 章 高屋建瓴:梳理编程约定2.2 方法与线程的关系 > 位置 5192.7 线程安全 > 位置 5952.8 调用与回调 > 位置 6612.…

ASP.NET Core 使用 gRPC 初探

(RPC通讯示意图)为什么突然说到gRPC呢,其实以前就想说一说这个东西,也想尝试使用一下,一直没有机会,一直看我公众号的小伙伴肯定都知道,这几天一直在录制一个《eShopOnContainer微服务架构》系列…

源码都没调试过,怎么能说熟悉 redis 呢?

一:背景 1. 讲故事记得在很久之前给初学的朋友们录制 redis 视频课程,当时结合了不少源码进行解读,自以为讲的还算可以,但还是有一个非常核心的点没被分享到,那就是源码级调试, 对,读源码还远远…

算法 - DFS/BFS

写DFS函数的时候首先确定当前位置是否已经加入路径 DFS函数大概率会传递“位置信息”,根据位置信息获取下一步的选择,(大部分是在循环中)选择、执行、回退 在哪做选择,就在哪退出选择,参考题9 def DFS()…

你想象中的Task后续,很简单?

【导读】前不久,写过一篇关于Task的简短文章,通过评论和转载得到好评,刚好我昨晚又写了一篇实现简单的消息队列也提到了Task,难道不应该是看具体执行什么操作,再考虑最佳方案?本文我们再次通过简短内容谈谈…

5G在工业互联网应用的机遇与挑战

移动通讯经过十年一代的发展,已经从1G发展到了5G,峰值速率实现十年千倍的增长,1G到4G是面向个人的,而5G是面向产业互联网和智慧城市服务。5G是一个颠覆性的技术,低时延(每秒钟下载一部高清电影)…

[C#.NET 拾遗补漏]10:理解 volatile 关键字

要理解 C# 中的 volatile 关键字,就要先知道编译器背后的一个基本优化原理。比如对于下面这段代码:public class Example {public int x;public void DoWork(){x 5;var y x 10;Debug.WriteLine("x " x ", y " y);} }在 Releas…

跟我一起学.NetCore之MediatR好像有点火

前言随着微服务的流行,而DDD(领域驱动设计)也光速般兴起,CRQS(Command Query Responsibility Seperation--命令查询职责分离)、领域事件名词是不是经常在耳边环绕,而MediatR组件经常用来对其技术的落地,凭这,小伙伴们说…

不想写脚本清理 mongodb 中的垃圾数据,ttlIndex 能帮到你!

mongodb一直都在不断的更新,不断的发展,那些非常好玩也非常实用的功能都逐步加入到了mongodb中,这不就有了本篇对ttlindex的介绍,刚好我们的生产业务场景中就有一个案例。。。一:案例分析 生产的推荐系统要给用户发送短…

后端学习 - 基础 《Java编程的逻辑》读书笔记

文章目录一 基础概念1 有关Java2 JVM / JDK / JRE3 与C的联系和区别4 各类型数据占用空间大小5 和 equals() 的区别、hashCode() 方法6 包装类型7 final 关键字8 参数传递机制:值传递9 String 的内存情况10 访问修饰符11 引用拷贝、浅拷贝与深拷贝三 面向对象1 面向…

cheatengine找不到数值_彩票中奖500万,领了还不到一半?这些问题不解决,钱都拿不走...

长期以来,“一夜暴富”是很多人梦寐以求的梦想,而作为最能让人“一夜暴富”的方式要数我国的福利彩票了,这也是很多人最容易活动暴富的机会,不少彩民长久以来一直买彩票的梦想就是“一夜暴富”。而突然暴富是很多人的梦想&#xf…