2022吴恩达机器学习课程——第二课(神经网络)

news2024/11/19 0:42:00

注:参考B站视频教程

视频链接:【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】


文章目录

  • 第一周
    • 一、神经元
    • 二、神经网络
    • 三、代码实现 & Tensorflow
    • 四、前向传播
    • 五、强人工智能
    • 六、矩阵乘法 (简单,可以跳过)
  • 第二周
    • 一、用Tensorflow训练神经网络
    • 二、激活函数
    • 三、Softmax
    • 四、Adam & 卷积层
  • 第三周
    • 一、训练集&测试集
    • 二、偏差&方差
    • 三、误差分析&迁移学习
    • 四、精确率&召回率
  • 第四周
    • 一、决策树
    • 二、信息增益&独热码
    • 三、随机森林

第一周

一、神经元

1.2 神经元

在这里插入图片描述


神经网络的起源
在这里插入图片描述


1.3 需求预测

预测T恤是否畅销
在这里插入图片描述


在这里插入图片描述


多个隐藏层
在这里插入图片描述


1.4 举例——图像感知
人脸识别问题是,你能否训练一个神经网络,以一百万像素亮度值的特征向量作为输入,并输出图片中人物的身份
在这里插入图片描述


在这里插入图片描述


应用到车辆检测
在这里插入图片描述


二、神经网络

2.1 神经网络中的网络层
三个神经元中的每一个都在执行一个小小的逻辑回归单元
上标【1】表示layer1(神经网络第1层)中的参数
在这里插入图片描述


layer1-->layer2
在这里插入图片描述


在这里插入图片描述


2.2 更复杂的神经网络

layer2-->layer3
在这里插入图片描述


在这里插入图片描述


如何计算任意层的激活值
在这里插入图片描述


2.3 神经网络向前传播
神经网络需要从输入X这个8*8矩阵预测出a3的概率
在这里插入图片描述


在这里插入图片描述


用f(x)来表示线性回归或逻辑回归的输出
在这里插入图片描述


三、代码实现 & Tensorflow

3.1 如何用代码实现推理
使用机器学习算法来优化咖啡的烘焙过程
在这里插入图片描述


使用Tensorflow做基于神经网络的推理
在这里插入图片描述


手写数字识别
x是一个含有像素强度值的列表
在这里插入图片描述


3.2 Tensorflow中的数据形式
Numpy是如何存储向量和矩阵的
在这里插入图片描述


在这里插入图片描述


两个方括号表示的是“二维矩阵”,一个方括号表示的是“一维向量”
在这里插入图片描述


张量tensor是Tensorflow团队创建的一种数据类型,可以有效地存储和执行矩阵运算
在这里插入图片描述


在这里插入图片描述
将数组传入Tensorflow时,Tensorflow喜欢将其转换为自己的内部格式,然后有效的使用张量;当你把数据读出来的时候,你可以把它作为一个张量或者将其转换为Numpy数组


3.3 搭建一个神经网络
Sequential把网络层串联起来形成一个神经网络框架。
调用model.compile()训练神经网络,调用model.predict()实现向前传播。
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


四、前向传播

4.1 单个网络层上的向前传播
在这里插入图片描述


4.2 前向传播的一般实现
在这里插入图片描述


五、强人工智能

5.1 强人工智能
在这里插入图片描述


六、矩阵乘法 (简单,可以跳过)

6.1 神经网络为何如此高效

向量化实现 matmul
在这里插入图片描述


6.2 矩阵乘法
在这里插入图片描述


在这里插入图片描述


6.3 矩阵乘法规则
在这里插入图片描述


在这里插入图片描述


6.4 矩阵乘法代码
在这里插入图片描述


在这里插入图片描述


第二周

一、用Tensorflow训练神经网络

1.1 Tensorflow实现
在这里插入图片描述


1.2 模型训练细节
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


二、激活函数

2.1 Sigmoid激活函数的替代方案
在这里插入图片描述


在这里插入图片描述


2.2 如何选择激活函数
在这里插入图片描述


ReLU函数更加常用
在这里插入图片描述


在这里插入图片描述


2.3 为什么模型需要激活函数
为了引入非线性,提高模型的拟合能力
在这里插入图片描述


在这里插入图片描述


在隐藏层使用线性激活函数,在输出层使用logistic激活函数,结果这个模型等价于逻辑回归
经验法则:不要在神经网络的隐藏层中使用线性激活函数
在这里插入图片描述


三、Softmax

3.1 多分类问题
在这里插入图片描述


在这里插入图片描述


3.2 Softmax

如何计算Softmax回归模型
在这里插入图片描述
Softmax回归模型是逻辑回归的推广


aj的值越大,损失函数L的值越小
在这里插入图片描述


3.3 神经网络的Softmax输出
在这里插入图片描述


在多分类问题上训练神经网络
在这里插入图片描述
并不是最好的版本


3.4 Softmax的改进实现
在这里插入图片描述


不同的表达方式下可能会出现“数值舍入误差”
在这里插入图片描述


改进,设置from_logits = True
在这里插入图片描述


将表达式直接带入,这样就给了Tensorflow可以重新排列项并计算的能力
相比下,逻辑回归的数值舍入误差更大一点,建议用改进方法
在这里插入图片描述


神经网络的最后一层不再输出一些概率值了,not a1~a10 , is z1~z10
在这里插入图片描述


把逻辑回归和代价函数整合在一起,把输出值映射到Logistic函数中,得到概率

在这里插入图片描述


3.5 多个输出的分类

举例:多标签分类问题
在这里插入图片描述


多类别分类和多标签分类容易混淆
在这里插入图片描述


四、Adam & 卷积层

4.1 高级优化方法

Adam算法可以自动更新学习率,它比梯度下降算法要快得多
在这里插入图片描述


模型的每个参数都会用不同的学习率
在这里插入图片描述


如果一个参数wj或b在大致相同的方向上移动,就提高参数的学习率;
如果一个参数来回震荡,就减小参数的学习率。
在这里插入图片描述


在这里插入图片描述
现在大多数从业者会使用Adam算法而不是梯度下降算法


4.2 其他的网络层类型
全连接层
在这里插入图片描述


卷积层:每个神经元只关注输入图像的一个区域
在这里插入图片描述


在这里插入图片描述


第三周

一、训练集&测试集

1.1 决定下一步做什么
在这里插入图片描述


机器学习诊断:指的是一种测试,你可以运行它来深入了解算法中哪些是有效的,哪些是无效的,从而明白应该怎样提升性能。其中一些诊断会告诉你,是否值得用几周或者几个月的时间来收集更多的训练数据,如果是的话,你就可以继续投入时间寻找数据,这有望提升性能;如果不是,那么进行诊断可以为你节省几个月的时间
在这里插入图片描述


1.2 模型评估
在这里插入图片描述
划分训练集与测试集
在这里插入图片描述


线性回归
在这里插入图片描述


模型在训练集上做的好,但是在测试集上表现得不好

在这里插入图片描述


分类问题
在这里插入图片描述
取一个数据集,把它分为训练集和一个单独的测试集,可以系统的评估你的学习成果;通过计算训练误差和测试误差,你可以衡量模型在训练集和测试集上的表现


1.3 模型选择&交叉验证测试集的训练方法

d是多项式的次数
在这里插入图片描述
可以尝试不同的模型,并根据计算误差来选择一个合适的模型,不过这种方法过于复杂,不太建议


划分为训练集&验证集&测试集

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


二、偏差&方差

2.1 通过偏差与方差进行诊断

一个更系统的判断算法是否有高偏差或者高方差的方法是,看你的算法在训练集和交叉验证集上的表现
在这里插入图片描述


当你拟合一个越来越高阶的多项式时,训练误差会趋于下降;因为当你有一个非常简单的线性函数时,它并不能很好的拟合训练数据;当你拟合二阶/三阶/四阶多项式时,对训练数据的拟合越来越好;随着多项式次数的增加,J_train通常会下降
在这里插入图片描述


高偏差意味着算法在训练集上表现不好,高方差意味着,算法在交叉验证集上的表现比训练集上的差得多

高方差与高偏差同时出现的例子极少存在,是由于模型一半过拟合、一半欠拟合导致的

在这里插入图片描述


2.2 正则化、偏差、方差

正则化参数的选择对偏差和方差会产生什么影响
在这里插入图片描述


在这里插入图片描述


J_train和λ分别作为横轴,两个图就像彼此的镜像

在这里插入图片描述


2.3 制定一个用于性能评估的基准

以语音识别应用为例
可能10.8%的误差意味着这是很高的偏差,但当我们按照人类水平进行基准测试时,我们看到这个算法在训练集上表现得很好,但是交叉验证误差远高于训练误差,因此该算法更多的是方差问题,而不是偏差问题
在这里插入图片描述


在这里插入图片描述


2.4 学习曲线

交叉验证的误差通常要比训练误差高
在这里插入图片描述


在这里插入图片描述
如果学习算法有很高的偏差,获得更多的训练数据本身不会有多大的帮助


在这里插入图片描述
如果学习算法有很高的方差,获得更多的训练数据可能会有所帮助


2.5 决定下一步做什么
在这里插入图片描述


2.6 方差与偏差
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


不同的层可以选择不同的λ值

在这里插入图片描述


三、误差分析&迁移学习

3.1 机器学习开发的迭代

在这里插入图片描述


垃圾邮件分类实例

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3.2 误差分析

这种误差分析的要点是,手动检查一组算法错误分类或标记的样本。通常分析完以后,下一步要做什么的灵感就来了。有时误差分析还可以告诉你,某种误差非常罕见,不值得你花那么多时间来修复
在这里插入图片描述


偏差和方差分析可以告诉你收集更多数据是否有帮助;通过误差分析可知:增加邮件特征(外部:路由、标题...)会有所帮助,但也只是一点点;然而,添加检测垃圾或钓鱼邮件的更复杂的特征(邮件内容:包含xx关键字...)可能会有很大帮助;检查拼写错误机会没有多大帮助
在这里插入图片描述
误差分析的局限性,它更容易处理人类擅长的问题


3.3 添加更多数据

数据增强
在这里插入图片描述


在这里插入图片描述


数据增强思想也适用于语音识别
在这里插入图片描述


考虑数据扩充的一种方式是如何修改、扭曲或在数据中制造更多噪音。但在某种程度上,你得到的仍然和你在测试集中得到的很相似,这就是学习算法最终会做的很好的地方。
在这里插入图片描述


照片OCR是指自动让计算机读取出图像中的文本

在这里插入图片描述


这是来自照片OCR任务的真实数据,关键步骤是能够看到像这样的小图像,并识别出中间的字母。
在这里插入图片描述
左边的图像是来自世界上拍摄的真实图片,右边图片是用电脑上的字体合成的。通过像这样的合成数据,你可以生成大量的图像或者图片OCR任务的例子


在这里插入图片描述


3.4 迁移学习-使用其他任务中的数据
假设你想要识别从0到9的手写数字,但是没有那么多这些手写数字的带标签数据

迁移学习给人的直观感受是,通过识别猫,狗,牛,人等,它已经为处理输入图像的前几个层学习了一些合理的参数,然后通过将这些参数迁移到新的神经网络,新神经网络参数的初始值更合适了,这样我们只需要再让算法学习一点,它就能成为一个很好的模型。

首先在大型数据集上进行训练,然后在较小的数据集上进一步参数调优,这两个步骤被称为“监督预训练”
在这里插入图片描述
有人会把训练有素的神经网络发布到互联网上,免费授权给任何人下载和使用。这意味着,与其自己从头开始,不如下载别人可能花了数周时间训练的神经网络,然后用自己的输出层替换原有的输出层,并执行option1或option2来微调别人已经监督预训练的神经网络,只需要做一点微调,你就可以快速得到一个表现良好的神经网络。


为什么迁移学习会起作用?
帮助神经网络学习检测图像的一些基本特征,比如找到边缘、角、曲线、基本形状。
在这里插入图片描述
预训练的限制条件:对于预训练和微调这两步,图像类型x是必须相同的


在这里插入图片描述


3.5 机器学习项目的完整周期

在这里插入图片描述


在这里插入图片描述


3.6 公平、偏见与伦理
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


四、精确率&召回率

4.1 倾斜数据集的误差指标
在这里插入图片描述


在这里插入图片描述


4.2 精确率与召回率的权衡

Precision:预测为正样本中有多少是真的预测正确了(找的对)
Recall:样本中的正例有多少被预测正确了(找的全)

在这里插入图片描述


在这里插入图片描述


第四周

一、决策树

1.1 决策树模型
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


1.2 学习过程
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


二、信息增益&独热码

2.1 纯度
在这里插入图片描述


计算熵的公式
在这里插入图片描述


2.2 选择拆分信息增益

熵的减少称为信息增益

决定何时不再继续分裂的停止标准之一是:是否熵减少的足够少
在这里插入图片描述
基于耳朵形状的分裂,导致熵的减少最大,所以我们会选择在根节点上分割耳朵形状特征


计算信息增益的基本公式
在这里插入图片描述
p1left = 左子树中带有正标签的例子的比例,正标签表示猫
w1left = 所有根节点到左边子分支的样本的比例


2.3 整合
构建决策树的整个过程
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2.4 独热编码One-hot
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2.5 连续有价值的功能

如何决定怎样划分体重特征?
在这里插入图片描述


为了让决策树在每个节点上能处理连续值特征,使用划分时,只需要考虑不同的值来划分,计算信息增益,并决定对其分割。选择连续值特征能提供尽可能高的信息增益
在这里插入图片描述


2.6 回归树
在这里插入图片描述


在这里插入图片描述


选择方差减少最大的那个
在这里插入图片描述


三、随机森林

3.1 使用多个决策树
事实上,仅仅改变一个训练例子就会导致这个算法在根节点产生一个不同的划分,形成了一棵完全不同的树,使得算法不那么健壮
在这里插入图片描述


集成树模型的最终预测
在这里插入图片描述
使用多个决策树能使整体算法对任何一棵树做的事情不那么敏感


3.2 有放回抽样
在这里插入图片描述


3.3 随机森林

袋装决策树
在这里插入图片描述


在这里插入图片描述


3.4 XGBoost

刻意练习:把更多的注意力放在做得不好的例子上

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3.5 何时使用决策树

  • 决策树和集成树通常可以很好的处理结构化数据(如:房价预测)
  • 非结构化数据:图像、视频、音频、文本
  • 决策树和集成树的优势:训练速度快
  • 神经网络适用于所有的数据结构(结构化和非结构化数据),但神经网络训练时长可能比决策树要慢
    在这里插入图片描述

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

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

相关文章

20221217英语学习

今日新词 haul v.(人)拖,拉 herd n.人群;(尤指有蹄的哺乳动物)兽群,牧群 focus v.把注意力集中于,重视;集中;(使)调节焦距 result…

代码随想录刷题记录day44 股票问题3 4

代码随想录刷题记录day44 股票问题3 4 123. 买卖股票的最佳时机 III 思想 dp数组定义 递推公式 dp[i][0] 第i天不操作股票手头最大的现金 i从0开始 dp[i][1] 第i天第一次持有股票的手头最大的现金 dp[i][1] max: i-1天不操作,第i天才买入:dp[i-1][0…

港科夜闻|香港科技大学(广州)拟获批首个省级重点实验室

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科技大学(广州)拟获批首个省级重点实验室。2022年12月6日,广东省科学技术厅发布关于2023年度平台基地及科技基础条件建设、高水平科技期刊建设拟立项目清单的公示,香港科大(广州)申报的广东省通感…

「Spring Cloud Alibaba官方手册」首发爆火,Github上标星243k

几年前 Dubbo被 SpringCloud所取代,相同的剧本,可惜阿里巴巴和 Spring社区都是巨头,巨头之间战斗要考虑很多,于是它们想到了合作, SpringCloud与alibaba相结合,技术上有人负责更新新的组件,也还…

今年面试太难,我凭借这份Java架构面试指南,成功跳槽涨薪10K

见字如面,这里是阿鑫~ 时光飞逝,转眼2022已经快结束了,最近内卷严重,大环境并不是很好,相信很多小伙伴也在准备明年金三银四的面试计划 ​跳槽加薪 职场中加薪有个屡试不爽的方法,那就是跳槽 每每听到周围…

浮点数运算不精确的问题解决和注意事项(BigDecimal)

总结:浮点数运算不精确的问题本质上是在存储的时候就不精确,这个问题会持续到即使使用到专业的工具类BigDecimal来使用时,如果仅仅只是传double类型做入参时依然会导致运算不精确,所以即使在使用BigDecimal工具类进行构造时也要使…

论文浅尝 | Knowledge Graph Contrastive Learning for Recommendation

笔记整理:刘尧锟,天津大学硕士链接:https://arxiv.org/pdf/2205.00976.pdf动机知识图谱已被用作有用的辅助信息来提高推荐质量。在这些推荐系统中,知识图谱信息通常包含丰富的事实和项目之间的内在语义相关性。然而,此…

Python源码学习新手攻略

Python源码学习是许多编程初学者在学习Python过程中十分重要的一个必经步骤,不仅如此,一些有一定开发经验的程序员想要提升自身,也常常需要阅读并学习优秀核心技术栈的源码。那么我们应该如何开始Python源码学习呢?下面小编就来和…

自学Web前端开发学习讲解 – 入门篇

很多人都对web前端感兴趣,这一期主要聊关于如何入门学习Web前端开发的过程分享,此篇适合想入门初学者,大佬就不用看了。主要内容是以本人这一路自学web前端的一些经验和建议,学习哪些知识,以及如何正确的去学&#xff…

AI绘画火爆,到现在还只是冰山一角?AIGC掀起当代新艺术浪潮

前言: hello,大家好我是Dream。近日,各大社交平台掀起了一股“AI绘图”风潮,很多同学朋友纷纷在社交平台上晒出了属于自己的AI照片,一时间AI相关话题热度高涨。那对于AI绘画以及开启AI内容创作新时代的昆仑万维你究竟了…

东北大学2023分布式操作系统考试题目及答案

Note:答案仅供参考,自己所写,不是标准答案,若发现错误,请指正,谢谢! 文章目录考试题目参考答案考试题目 1、简述分布式系统的设计目标中开放性的特点有哪些? 、 、 、 、 、 、 、…

​燕东微科创板上市:市值276亿 亦庄国投与京东方是股东

雷递网 雷建平 12月16日北京燕东微电子股份有限公司(简称:“燕东微”,股票代码为:“688172”)今日在科创板上市,燕东微本次发行17986.5617万股,发行价21.98元,募资总额39.56亿元。燕…

关于hcaptcha (vm wasm ob)三合一

该文章主要提供交流学习使用,请勿利用其进行不当行为! 如本篇文章侵犯了贵公司的隐私,请联系我立刻删除! 如因滥用解密技术而产生的风险与本人无关! 1 Hcaptcha hCaptcha 旨在解决机器学习中最劳动密集型的问题&am…

毕业设计 - 基于 java web的网上花店销售系统设计与实现【源码+论文】

文章目录前言一、项目设计1. 模块设计数据流图功能模块2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 毕业设计项目: 网上花店销售系统的设计与实现 一、项目设计 1. 模块设计 数据流图 功能模块 1、首页(主界面) 提供简洁美观的主界…

Jenkins+Kubernetes企业级DevOps容器云平台

一、Kubernetes在DevOps中的作用 1、DevOps DevOps假导所有新的功能特性可以像流动的水一样,迭代到用户的终端,而水是不能讲流的,为了保证水流的质量,我们就必须在水流动的途中治理,直到最终交付到用户的手中。 DevOps是一套方法论、一系列的原则和实践,其主要目标为帮…

【Robot Framework】发送GET和POST请求

做接口自动化时,经常要使用GET与POST请求,那么如何使用RF发送对应的请求呢? 一、安装RequestsLibrary pip install robotframework-requests安装以后,导入到对应的测试套件或测试用例中. 本次主要介绍通过RequestsLibrary来实现…

JavaEE - JVM八股文(JVM内存区域划分,典型面试题,JVM类加载机制)

文章目录1. JVM运行时数据区(内存区域划分)2. JVM类加载机制常见面试题1. JVM运行时数据区(内存区域划分) JVM运行时数据区域也叫内存布局,但需要注意的时它和Java内存模型(JMM)不同&#xff0…

使用PyTorch进行知识蒸馏的代码示例

随着机器学习模型的复杂性和能力不断增加。提高大型复杂模型在小数据集性能的一种有效技术是知识蒸馏,它包括训练一个更小、更有效的模型来模仿一个更大的“教师”模型的行为。 在本文中,我们将探索知识蒸馏的概念,以及如何在PyTorch中实现它…

计算机毕设Python+Vue校园舆情监控系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

C#修改富文本框(RichTextBox)指定内容颜色

1.前言 最近给客户做了一个协议解包与组包的工具,以便于他们给终端客户或者集成商使用,让客户能够快速集成产品协议,降低客户集成工作量,产品协议是基于JT/T808,但是有增加了自己的一些特殊修改。 客户使用的是C#开发…