2022吴恩达机器学习课程——第三课(非监督学习)
注:参考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 课程总结和致谢