2022吴恩达机器学习课程——第三课(非监督学习)

news2024/11/8 18:40:00

注:参考B站视频教程

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

写在前面:文章只是为了记录学习课程的整个过程,方便以后查漏补缺,方便找到对应章节,希望看到这篇文章的同学能够认真的看一遍视频教程,会有很大收获!

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


文章目录

  • 第一周
    • 一、学习路线
    • 二、K-means算法
    • 三、异常检测
  • 第二周
    • 一、协同过滤算法
    • 二、协同过滤算法实现
    • 三、基于内容过滤
  • 第三周
    • 一、强化学习
    • 二、贝尔曼方程
    • 三、登月器&算法改进

第一周

一、学习路线

1.1 学习路线
在这里插入图片描述


二、K-means算法

2.1 什么时聚类
在监督学习中,数据集包括输入x和目标输出y:
在这里插入图片描述


在无监督学习中,你会得到一个只有输入x的数据集,但没有标签或目标标签y
因为我们不用打上标签y,我们不能告诉算法,我们想要预测的‘正确答案y’是什么。相反,我们需要算法自己找出数据中的一些结构
在这里插入图片描述


在这里插入图片描述


2.2 K-means直观理解

K-means算法会重复执行两个步骤:第一步将点分配给离他最近的簇质心,第二步是将每个簇质心移动到分配给它的所有点的平均位置或平均值

在这里插入图片描述


在这里插入图片描述


重复以上两个步骤
在这里插入图片描述


此时K-means聚类算法已经收敛了
在这里插入图片描述


2.3 K-means算法
随机初始化簇质心μ1,μ2,···,μk
计算xi与μk之间的距离,也称为L2范数
在这里插入图片描述


移动簇质心
在这里插入图片描述


在运行K-means时,如果没有为某簇分配点,消除该簇的做法更常见。
在这里插入图片描述


在这里插入图片描述


2.4 优化目标

K-means的代价函数

Ci:目前训练样本Xi所在簇的索引(1~K)
μk:簇质心k的位置
μci : 样本Xi分配到的簇的簇质心

在这里插入图片描述


在这里插入图片描述


K-means的第一步,将点分配给簇质心,这意味着通过更新C1~Cm,以尽可能地最小化代价函数J,同时保持μ1–μk不变。
第二步相反,当你移动簇质心时,试图让C1~Cm保持不变,但是通过更新μ1–μk,尽量最小化代价函数。

在这里插入图片描述


在这里插入图片描述


2.5 初始化K-means

K-means聚类算法的第一步,为簇质心μ1~μk选择随机位置作为初始猜测。
如何猜测μ1~μk以找到更好的簇

初始化簇质心的方法
在这里插入图片描述


事实证明,如果你运行3次K-means,最后得到这三个不同的簇,那么如何做选择?-->计算代价函数J
在这里插入图片描述


在这里插入图片描述


2.6 选择聚类数量

2 or 4 簇
在这里插入图片描述


选择正确的簇数量:肘部法则(不建议用)

在这里插入图片描述


同时运行k=3/k=5,然后对比两种解决方案,看看到底是生产多尺码或少尺码会对T恤业务更有好处
在这里插入图片描述
K-means在图像压缩中的应用,在压缩图像质量和压缩图像程度之间会有一个权衡,其中K值取决于你希望图像看起来有多好,希望压缩图像到什么程度。


三、异常检测

3.1 发现异常事件

异常检测算法:通过观察正常事件的未标记数据集,从而学会检测异常或在异常事件发生时发出危险信号。

用异常检测来检查制造的飞机发动机是否异常
假如现在有M个飞机发动机,包含每个发动机特征X1和X2的数据。
在这里插入图片描述


执行异常检测的最常见方法是:密度估计
在这里插入图片描述


异常检测例子:欺诈检测;用于监控集群和数据中心的计算机
在这里插入图片描述


3.2 高斯正态分布
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3.3 异常检测算法
在这里插入图片描述


如何构建异常检测系统的过程
在这里插入图片描述


在这里插入图片描述


3.4 开发与评估异常检测系统
在这里插入图片描述


在这里插入图片描述


在交叉验证集上或测试集上实际评估算法
在这里插入图片描述


3.5 异常检测与监督学习对比

当你有非常少的样本时,异常检测算法通常是更好的选择;相反,如果你的正负样本都很多,监督学习可能更适用。
异常检测所做的是查看正常样本,尝试对其建模,将偏离正常很多的样本视为异常;监督学习希望有足够的正样本去使得算法能学习到正样本的样子。

在这里插入图片描述
垃圾邮件检测试图去检测更多你过去可能在训练集中看到的垃圾邮件类型;然而,如果你试图检测前所未有的全新欺诈类型,那么异常检测可能更适用。


在这里插入图片描述


3.6 选择使用什么特征
在构建异常检测算法时,选择一个好的特征非常重要。
在训练异常检测算法后确保你的数据近似高斯。
在这里插入图片描述


先训练模型,然后查看算法在交叉验证集中没能检测出的异常,然后查看这些样本,考虑是否有必要新建一个特征,从而使算法能够发现这些异常,异常的样本会在新特征上表现出有反常大或小的值,这样算法就可以成功的将这些样本标记为异常。
在这里插入图片描述


在这里插入图片描述


第二周

一、协同过滤算法

1.1 提出建议

推荐系统
在这里插入图片描述


1.2 使用每个特征
预测用户j对电影i的评分
在这里插入图片描述


只有用户j真的对电影i评分了,我们才会对它进行求和
在这里插入图片描述


如何学习所有用户的参数的代价函数?
在这里插入图片描述


1.3 协同过滤算法

假设参数w和b已知,可以预测出对应x1,x2的值
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


如何将这个关于w、b和x的代价函数最小化?用梯度下降算法-->这里代价函数不仅仅是w和b的函数,现在是w、b和x的函数,在这里用w和b来表示所有用户的参数
在这里插入图片描述


协同过滤这个名字指的是,多个用户对同一部电影进行评分,有点协作的样子,给了你这部电影大致的感觉,反过来可以让你预测其他还没有评价这部电影的用户可能在未来的评价。

1.4 二进制标签
1/0表示用户是否看完了整部电影,或者表示用户是否将电源加入收藏夹;?表示用户还没有看到该电影
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


二、协同过滤算法实现

2.1 均值归一化

均值归一化会帮助算法为尚未对任何电影评分的新用户提供更好的电影评分预测。

在这里插入图片描述


在这里插入图片描述
没有均值化之前,算法猜测Eve对所有电影的评分为0;均值化后,算法猜测新用户Eve的初始猜测与其他用户对这五部电影的评分的均值相等。后者的预测更加合理。


2.2 协同过滤Tensorflow实现
有时计算导数或偏导数可能很困难,但是Tensorflow会帮助解决这个问题。
在这里插入图片描述


自动求导

在这里插入图片描述


在协同过滤算法中,代价函数cofiCostFuncV的输入中,Ynorm是评分均值归一化,R表示哪些电影具有评分
使用Tensorflow的Auto Diff工具自动计算差值,并利用Adam optimizer帮助我们优化代价函数。
在这里插入图片描述


2.3 寻找相关特征
在这里插入图片描述


协同过滤算法的一些限制:

协同过滤算法的一些限制:
1、冷启动问题:当有一个新电影,有很少的用户评分;或者有一个新用户他很少评分。那么,该电影或该用户的协同过滤结果可能不是很准确。
2、不能为你提供一种自然的方式来使用附带信息或有关项目或用户的附加信息。

在这里插入图片描述


三、基于内容过滤

3.1 协同过滤与基于内容过滤对比

在协同过滤中,我们让许多用户给不同的物品打分;与之相比,在基于内容过滤中,我们有用户的特征和物品的特征,我们想找到一种方式来找到用户和物品之间的良好匹配。我们要做的是计算用户向量Vu,电影向量Vm,然后在他们之间取点积,尝试找到好的匹配。

在这里插入图片描述


在这里插入图片描述


Xu和Xm的大小可能不同,两个V必须大小相同,因为如果你要计算Vu和Vm之间的点积,那么他们两个向量必须具有相同的维度。
在这里插入图片描述


3.2 基于内容过滤的深度学习方法
用户网络和电影网络可以假设具有不同数量的隐藏层以及每个隐藏层的不同数量的单元,只有输出层需要具有相同维度的大小
在这里插入图片描述


如何训练用户网络和电影网络的所有参数?
在这里插入图片描述


在这里插入图片描述


3.3 从大型目录中推荐
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3.4 推荐系统中的伦理
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


3.5 基于内容过滤的Tensorflow实现

在这里插入图片描述


第三周

一、强化学习

1.1 什么是强化学习

强化学习的关键思想是:你不需要告诉它每个输入的正确输出是什么,你所要做的就是指定一个奖励函数,告诉它什么时候做的好,什么时候做的不好,算法的工作是自己去想明白,如何选择好的行动。

在这里插入图片描述


在这里插入图片描述


1.2 示例:火星探测器
(s,a,R(s),s`):状态,行动,奖励,下一个状态。这是强化学习算法在决定如何采取行动时会考虑的核心要素。

状态6没有状态1更有趣,科学家希望火星探测器能在状态1而不是状态6执行科学任务。我们反映状态1更有价值的方式是通过奖励函数。状态1的奖励是100,状态6的奖励是40。
在这里插入图片描述


1.3 强化学习的回报
类比:想象你有一张5美元的钞票作为跑腿费,你可以直接取拿到;或者走半个小时穿过城镇,拿到一张10美元的钞票,你更愿意选择哪一个?
回报的概念抓住了,奖励你可以更快得到,或者可能比你花更长时间才能得到的奖励更有吸引力
γ是折扣因子。在许多强化学习算法中,更快获得奖励会导致更高的总回报值。

在这里插入图片描述


在这里插入图片描述

但是如果有负面的奖励,折扣因子实际上激励系统将负面的奖励尽可能的推迟到未来。举例:如果你必须支付给某人10美元,但是如果你能够推迟几年支付,那么实际上你赚了。因为利率会变化,几年后的10美元没有今天的10美元更值钱。所以对于负奖励的系统,它导致算法试图将负面奖励尽可能推到未来。


1.4 决策:强化学习中的策略

策略函数Π:它的工作是将任意状态s作为输入,并将其映射到它希望我们采取的某个动作a,即告诉我们在给定状态s下应该采取什么行动。
在这里插入图片描述


强化学习的目标是找到一个策略Π,来告诉我们每一步应该采取什么动作才能使得回报最大化。

在这里插入图片描述


1.5 审查关键概念
在这里插入图片描述


马尔可夫决策过程:是指未来仅取决于当前状态,而不取决于在您到达当前状态之前可能发生的任何事情。即未来只取决于你现在在哪里,而不取决于你是如何来到这里的。

在这里插入图片描述


二、贝尔曼方程

2.1 状态-动作价值函数定义

状态动作价值函数是一个函数,通常由大写字母Q表示,它是你可能所处的状态s和做出的行动a的函数。

在这里插入图片描述


状态s下的最佳动作a实际上能最大化Q(s,a)
在这里插入图片描述


2.2 状态-动作价值函数示例

可以在optional Lab中改变奖励函数,折扣因子γ,尝试一系列不同的值,然后看看Q(s,a)怎样变化,最优回报,最优策略怎么变化

在这里插入图片描述


2.3 贝尔曼方程

贝尔曼方程帮助我们计算状态动作价值函数

在这里插入图片描述


在这里插入图片描述


在强化学习问题中获得的总回报有两部分:第一部分是你马上得到的奖励;第二部分是γ乘以下一状态s`的回报

在这里插入图片描述


在这里插入图片描述


2.4 模拟随机环境

让机器人向左走,它有90%的可能向左走,10%的可能向右走。
在这里插入图片描述


因为最大化回报的值现在是随机的,我们并不关心这个。我们要最大化折扣奖励总和的期望均值
在这里插入图片描述


期望回报
在这里插入图片描述


三、登月器&算法改进

3.1 示例:连续状态空间应用

机器人所处的位置可能不止是离散状态,它可以位于大量连续位置中的任何一个。位置可以用一个数字来表示,比如2.7公里或者4.8公里,或者0到6之间的其他任何数字。

有6个状态的火星探测器:X位置,Y位置,方向,在X方向的速度(X坐标变化的有多快),在Y方向的速度,角度变化的速度。

在这里插入图片描述


直升机的状态包括:位置XYZ,横滚、俯仰,偏航,以及控制直升机的各个位置方向的速度。
在这里插入图片描述


3.2 登月器
在这里插入图片描述


登月器的奖励函数

在这里插入图片描述


在这里插入图片描述


3.3 学习状态值函数
8个数字代表登月器的状态,4个数字是其动作的独热码,两者组成神经网络的输入,称为x
在这里插入图片描述


如何获得在神经网络训练的x、y样本对的训练集?

在这里插入图片描述


在这里插入图片描述


3.4 算法改进:改进的神经网络架构

改进前:依次输出4个值
在这里插入图片描述


改进后:同时输出4个值
在这里插入图片描述


3.5 算法改进:ε-贪婪策略
在这里插入图片描述


3.6 算法改进:小批量和软更新(可选)
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


软更新可以使强化学习算法更可靠的收敛,它降低了强化学习算法振荡或不收敛或具有其他不良性质的可能性。
在这里插入图片描述


3.7 强化学习的状态
在这里插入图片描述


3.8 课程总结和致谢
在这里插入图片描述


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

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

相关文章

Numpy+PIL实现图片的自由旋转

1.内容简介 使用PIL和Numpy编程实现图片的自由旋转。 2.技术要点 (1)用Python PIL库将图片读取为NumPy 数组。 (2)采用旋转后图像幅面放大的图像旋转变换方式,根据旋转角度和原图像尺寸计算图像像素点的旋转变换矩阵…

MySQL中 java 的 JDBC 编程使用方法及驱动包的下载和使用

文章目录1.简介2.JDBC 的使用2.1 先安装对应数据库的驱动包~~2.2 把安装好的 jar 驱动包导入到项目中~~2.2.1 在项目中创建目录,把 jar 包拷贝进来。2.2.2 右键创建的目录3.编写数据库代码插入一个记录4.查看插入记录后的数据表5.如何编写代码实现查找操作1.简介 实…

数据库实验2 数据库安全性定义与检查

前言:记得验收时问了一个问题吧,就是用户和角色的区别是什么 实验2.1自主存取控制实验 1.实验目的 掌握自主存取控制权限的定义和维护方法。 2.实验内容和要求 定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据库验证权限分配…

分享巧记Linux命令的方法

最近有些学弟经常私信问我说,他们自己是Linux方面的小白,对于Linux的命令了解十分的少,虽然每次跟着我推荐的学习视频教程可以进行操作,但是离开了视频,就又是两眼抓瞎,什么也想不起来。不知道怎么样通过命…

【数据结构】队列与Queue接口

目录 一、队列 二、 Java里的Queue接口 1、概述 2、常用方法 1.入队 2.出队 3.获取队首元素 4、判空 三、单链表实现队列 1、准备字段 2、实现入队 3、实现出队 4、实现获取队首元素 5、实现判空 四、循环队列的实现 1、前言 2、字段准备 3、实现入队 4、实现…

一致性哈希

一、简介 这个算法是一种特殊的哈希算法,目的是解决分布式缓存的问题。 普通哈希算法在分布式存储具有较大的局限性,简单的讲就是难以扩展。 一致性哈希相对而言具有较好的容错性和可扩展性,更加适合现在的分布式存储。 二、经典哈希版本 …

SpringBoot+Vue项目实践课程教学管理平台

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

✿✿✿JavaScript --- JSON

目录 1.JSON的简介 2.JSON的语法规则 3.JSON 字符串转换为 JavaScript 对象 4.常用的JSON相关的函数 5.JSON对象的遍历 6.补充:JS中的this关键字 1.JSON的简介 JSON( JavaScript Object Notation ) 是用于存储和传输数据的格式&#xf…

Android studio配置大内存,编译速度更快!

本文使用的是windows 10系统,Android studio 版本是Android Studio Chipmunk | 2021.2.1(松鼠) 目录为什么要配置大内存?默认内存是多少?如何扩大内存配置?这个配置保存在哪个文件?文件在哪里&a…

二叉树10:二叉树的最小深度

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:111. 二叉树的最小深度 题目: 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近…

Asp.Net Core实现最基本的Http服务

概述 和.NetFramework时代不同,Core是可以自承载的,也就说开发好的Web项目,可以打包成exe直接运行的,而不必放到IIS这样的环境中。接下来,我们写点代码,体验一下Asp.Net Core自带的Http功能。 初体验 所谓…

嵌入式微功耗RTU的功能与特点介绍、技术参数详情

平升电子嵌入式微功耗RTU,可灵活嵌入至各类仪表、传感器和工业设备中,定时采集设备数据并通过4G/5G/NB-IoT远传至监管软件,实现设备联网。 嵌入式微功耗RTU设计小巧、方便集成,微功耗运行,支持标准水资源/水文/环保/M…

Biotin-PEG-AC,Biotin-PEG-Acrylate,生物素PEG丙烯酸酯线性杂双功能PEG试剂

英文名称:Biotin-PEG-AC,Biotin-PEG-Acrylate 中文名称:生物素-聚乙二醇-丙烯酸酯 生物素-聚乙二醇-丙烯酸酯是一种含有生物素和丙烯酸酯的线性杂双功能聚乙二醇试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。生物素能与亲和素和…

智创万物,数赢未来——如何助推数智时代的发展浪潮

数智化核心特征 可视化 消费者的行为可以看得见,生产者的行为也可以看得见。产业互联网或者消费互联网非常重要的一点就是要对消费者行为和生产者行为的可视化,其背后是数字化的力量。 可量化 可量化意味着企业家可以对管理流程进行改造,…

echarts的legend——图例样式的配置

认识图例: 以上几张图表中,红色圆圈部分即图例 echarts图表中的图例,有形状,颜色,位置等等各种样式的不同配置。 echarts官网配置项手册里有非常详细的内容,我们挑几种常用的看看,加深对legend属…

深度学习——物体检测算法:R-CNN,SSD,YOLO(笔记)

一,R-CNN 1.区域卷积神经网络R-CNN 首先从输入图像中提取若干个锚框,并标注好它们的类别和偏移量。然后用卷积神经网络对每一个锚框进行前向传播抽取特征。最后用每个提议区域的特征来预测类别和边界框。 ①使用启发式搜索算法来选择锚框 ②使用预训练…

【第一周学习——认识 O(N*logN) 的排序[ 归并排序 、堆排序、快速排序 ]

前言: 👏作者简介:我是笑霸final,一名热爱技术的在校学生。 📝个人主页:个人主页1 || 笑霸final的主页2 📕系列专栏:《数据结构与算法》 📧如果文章知识点有错误的地方&a…

力扣(LeetCode)187. 重复的DNA序列(C++)

哈希表 直观思考,由于限定了答案长度 101010 ,只需要一次遍历字符串,统计所有长度为 101010 的子串的出现次数(哈希表) ,最后遍历哈希表,维护答案,记录出现 222 次(及以上)的字符串 。 class Solution { …

【BBuf的CUDA笔记】二,解析 OneFlow BatchNorm 相关算子实现

0x1. 前言 在ResNet中(https://github.com/pytorch/vision/blob/main/torchvision/models/resnet.py),关于BatchNorm的调用一共有两种模式,第一种是ReLU接在BN之后: out self.bn1(out) out self.relu(out)另外一种…

MicFunPred——最新16S rRNA扩增子数据功能预测数据库

近年来,基于扩增子测序进行物种的功能预测是研究微生物群落功能的主要方面,目前最常用的软件包括Tax4Fun以及PICRUSt2。关于这两款软件的使用方法详可参见凌波微课|扩增子研究第十六讲:扩增子测序结果中的物种功能预测。 Tax4Fun使用最近邻匹…