【推荐系统相关和强化学习】吴恩达机器学习笔记EP13(P121-P130)
从今天开始我将学习吴恩达教授的机器学习视频,下面是课程的连接1.1 欢迎来到机器学习!_哔哩哔哩_bilibili。一共有142个视频,争取都学习完成吧。
协同过滤 VS 基于内容的过滤
上一EP介绍了协同过滤的内容,协同过滤根据用户评分推荐可能该用户也会给高分的项目。
然后这里介绍一个基于内容的推荐方法,这种方法需要有足够的数据支撑。下图有用户和项目特征数据的举例。
基于内容的过滤方法主要是学习匹配。计算两个向量vu和vm的点积,这个就是预测的值,然后试图根据这个值去找到好的匹配。
Deep learning for content-based filtering
下面就介绍了vu和vm的由来,主要是训练两个神经网络,然后分别通过xu和xm计算或者说推理vu和vm。
这里要注意的是,两个神经网络里面的隐藏层的神经元数量可以随便定,但是最后两个输出层的神经元数量必须要相等,这样才能做之后的点乘操作。
然后将两个神经网络合成一个,训练整个神经网络。
代价函数如下图所示,主要就是用vu和vm的点积也就是预测值减去实际值y。
应用起来,比如寻找相似电影推荐,就可以让下面这个计算举例的式子的值尽可能小。
从大目录中推荐
现实中,整个要推荐的大目录中有很多的数据,下面就是从大目录中推荐的一个示例:
生成一个大的推荐表单分为下面几个组成部分:1)使用推荐系统,用十部用户最近看的电影,找出与这十部电影相似的推荐。2)观看次数最多的三类电影,找出其中的十部。3)国内排前20的电影。
最后删除重复或者已经看过的电影。这样就组成了一个大的推荐表单内容。
接着是排名的做法:就是运用学好的模型对列表内容进行排序,然后向用户展示内容排名。
两个过程细节:
检索越多项,可获得更好的性能,但速度慢。
离线实验,时刻看加入额外的项会不会有不好的结果。
推荐系统的道德使用
推荐系统的最后一部分内容是道德使用相关的内容。
比如好的使用示例是可以给到更多用户良好的旅行体验。
反例比如说会压榨客户等等。
一个笼统的改进做法就是不接受来自剥削性企业的广告。
下图是其它问题示例和笼统的改进做法,可以自行看下图,文字不做说明。
基于内容过滤的TensorFlow实现
代码中进行说明:
#两个神经网络的构建
user_NN = tf.keras.models.Sequential([
tf.keras.layers.Dense(256, activation = 'relu')
tf.keras.layers.Dense(128, activation = 'relu')
tf.keras.layers.Dense(32)
])
item_NN = tf.keras.models.Sequential([
tf.keras.layers.Dense(256, activation = 'relu')
tf.keras.layers.Dense(128, activation = 'relu')
tf.keras.layers.Dense(32)
])
# 创建用户输入和分数到基础网络当中
input_user = tf.keras.layers.Input(shape=(num_user_features)) # 为用户提取输入特征
vu = user_NN(input_user)
vu = tf.linalg.l2_normalize(vu, axis=1) # 将向量vu归一化为长度1
input_item = tf.keras.layers.Input(shape=(num_user_features)) # 为用户提取输入特征
vm = item_NN(input_user)
vm = tf.linalg.l2_normalize(vu, axis=1) # 将向量vm归一化为长度1
# 结合两个神经网络,做点乘
output = tf.keras.layers.Dot(axis=1)([vu, vm])
model = Model([input_user, input_item], output) # 给模型输入和输出
cost_fn = tf.keras.losses.MeanSquareError() # loss定义
什么是强化学习
进入本课程最后的内容强化学习。
强化学习就是告诉系统什么是对的,什么是错的,但是不说怎么做,让系统自己去尝试。
针对这种方法,引入奖励函数x。就是如果系统做对,就给一点奖励;如果系统做错,就给大一点的惩罚。
火星探测器示例
下面用火星探测器作为示例。
state是每个状态下面有对映的奖励。比如说火星探测器在状态1和6上面返回好的探测照片,就给予100和40的奖励。
通过奖励决定如何采取行动,经过不断试错,找到获取奖励最大的情况。
下面是一个写法示例:(s, a, R(s), s’),代表的是(目前状态位置, 方向, 对应奖励, 新状态位置)。
The Return in reinforcement learning
强化学习中再引入一个贴现因子的概念,用来综合衡量高价值的奖励和要更新的次数,更快获得奖励会导致总回报的价值更高。
强化学习中的决策与策略制定
再来引入一个概念,π是状态策略函数,注意这里pai是个函数不是一个常数!用来告诉系统当前状态下怎么做是最好的。
强化学习的目标是找到一个策略,告诉系统每个状态下应该采取什么动作。
回顾关键概念
最后是前面介绍的相关概念的回顾和对应概念的示例。
最后介绍了强化学习的过程,也就是马尔可夫决策过程。
分为更新策略π,然后做出行为,接着与环境/世界进行实际的交互,最后更新状态,看是否给予奖励。
强化学习做的就是不断重复这个过程。