Unsupervised Learning, Recommenders, Reinforcement Learning
机器学习-无监督学习,推荐系统与强化学习
课程简介
In the third course of the Machine Learning Specialization, you will:
• Use unsupervised learning techniques for unsupervised learning: including clustering and anomaly detection.
• Build recommender systems with a collaborative filtering approach and a content-based deep learning method.
• Build a deep reinforcement learning model.
The Machine Learning Specialization is a foundational online program created in collaboration between DeepLearning.AI and Stanford Online. In this beginner-friendly program, you will learn the fundamentals of machine learning and how to use these techniques to build real-world AI applications.
This Specialization is taught by Andrew Ng, an AI visionary who has led critical research at Stanford University and groundbreaking work at Google Brain, Baidu, and Landing.AI to advance the AI field.
This 3-course Specialization is an updated and expanded version of Andrew’s pioneering Machine Learning course, rated 4.9 out of 5 and taken by over 4.8 million learners since it launched in 2012.
It provides a broad introduction to modern machine learning, including supervised learning (multiple linear regression, logistic regression, neural networks, and decision trees), unsupervised learning (clustering, dimensionality reduction, recommender systems), and some of the best practices used in Silicon Valley for artificial intelligence and machine learning innovation (evaluating and tuning models, taking a data-centric approach to improving performance, and more.)
By the end of this Specialization, you will have mastered key concepts and gained the practical know-how to quickly and powerfully apply machine learning to challenging real-world problems. If you’re looking to break into AI or build a career in machine learning, the new Machine Learning Specialization is the best place to start.
无监督学习
无监督学习是在没有标签的数据中自动寻找某些规律
聚类任务是典型的无监督学习任务,通过某些特征将相似的人或事物自动归为一类
无监督学习任务还有异常检测(找出一些不寻常的数据)和维度降低(使用更少的数字对数据进行压缩)
聚类
聚类是一种典型的无监督学习算法,不定义标签,让算法自己去寻找数据中有趣的特征
聚类可以在下面几个方面得到应用:
- 找出比较相似的新闻
- 对用户或者市场进行分析
- 分析DNA
- 分析宇宙数据
K-means聚类步骤:
- 随机初始化个中心点(预先定义)
- 计算其余的点与中心点的距离,与最近的中心点归为一类
- 更改中心点为类别中所有点的平均值
- 迭代上述步骤直到所有点的类别不再变化
如何决定聚类的数量?Elbow method
多种聚类数量都尝试一下,找到“肘点”,也就是增加聚类数量后代价函数也不能明显减小的点
如何随机初始化最初的类别中心点?
- 随机选择几个训练样本作为中心点
- 随机选取中心点多次,运行一轮算法,寻找代价最小的作为初始化的中心点
异常检测
已经拥有一些数据,增加一条数据,判断其是否符合已有的数据的特征,如果不符合则为异常数据
正态分布:
异常检测:,计算点的是否满足大于预先定义的阈值
实际应用中,可以找一些有标记的异常点,指导算法选取合适的阈值
在某种类别(异常)的数据量很少的情况下,且异常的种类较多,特征无法很好区分出来的时候,使用异常检测算法比较好。
推荐系统
场景:很多用户对电影进行打分,分数从0-5,如何向用户推荐合适的电影?
设用户的数量为,电影的数量为,
如果用户对电影进行了打分,那么,反之。
表示用户对电影打分的分数(0-5)
表示电影的特征数量(如浪漫程度、武打程度等等),则用户对应的特征向量为
表示的是用户打分的电影数目
预测用户对电影的打分:
代价函数:
对所有用户来说,,是定值,忽略不计
协同过滤算法
前面是有特征,通过类似于线性回归的方式可以进行预测,但是如果没有特征应该怎么做呢?
已知,预测
代价函数:
将两个代价函数结合到一起:
如果评分是二值化的,则类似于线性回归与逻辑回归的区别:
如果一个人没有对任何电影进行评分,则选取其他所有人的评分平均值作为他的评分。
协同过滤算法的局限性:
- 对于新加进来的事物不太好办,没有办法与其他的一起排名,且推荐后有一点讲不出道理
- 不能使用一些已有的其他特征
基于内容的过滤算法
协同过滤算法是基于用户的评分,根据比较相似的评分情况来进行推荐
基于内容的过滤算法是基于用户和物品的特征来寻找比较合适的匹配对
设用户对应的特征是,电影对应的特征是
比较两个特征之间相似度的方法是点乘,但是两者的维度不同,因此要对输入的特征增加几层神经网络,使其输出相同,再进行点乘。
通过神经网络后,是的32维向量,是的32维向量,
代价函数为::
大型推荐系统
检索和排序策略:
- 检索策略会从大规模中选择可信的候选者,如对于电影来说找这个国家最流行的20个电影等等,然后汇总、去重
- 然后对去重后的列表使用算法进行排序,按照排名的先后顺序向用户推荐。
强化学习
强化学习不告诉应该怎么做,而是只告诉做什么,如果做的好有奖励,做的不好有惩罚,从而让算法自动向着奖赏最多的方向优化,最终学习出最好的结果。
目前的状态、动作、奖励、下一个状态,下一个状态的动作
每一个时间步后,会有一个权重,最终的返回值(Return)是权重与奖励的乘积
一般来说,权重按照幂的方式变化,如第一步是,第二步是,第步是。
措施指的是在状态应该采取什么样的动作
强化学习的目标就是找到合适的措施从而最大化返回的奖励(Return)
马尔可夫决策过程:未来只取决于现在所处的位置,与之前是怎么到达现在这个位置的无关。
状态-动作方程:表示从状态开始进行动作,然后后面采取最优化的动作
因此,可以得出两个结论:
- 从状态开始的最佳的返回奖励是
- 从状态开始的最好的动作是能达到的动作
贝尔曼方程:
在更为复杂的环境下,状态之间的转移可能并不是确定的,有一定的几率到达其他的状态
因此得到的返回奖励实际上是期望的返回奖励,即
状态空间可能是连续的,对于月球车来说,有方向(前后左右和旋转)和速度两种变量,因此
强化学习神经网络(DQN)
训练神经网络:输入是,输出目的是找到最合适的动作使得最大。其中,神经网络的最后一层输出的神经元数量可以修改为的数量,就可以对所有可能情况的进行同时训练。
训练步骤:
- 随意进行一个动作,得到
- 采集大量的
- 使用作为输入,作为输出训练使得
- 令,重复上述步骤
算法优化
-贪心策略:在DQN的第一步中,以的概率随意选取,以的概率选取能使最大化的
mini-batch:在只选取一部分进行训练
soft update:步骤中,并不直接修改,而是使用权重对新旧参数进行组合
强化学习的现状
- 用于实验室模拟的效果比较好,实际中有些困难
- 目前的应用比监督学习或者无监督学习要少很多
- 在未来应用上还是有很大的潜力的