无监督学习与强化学习基础

news2024/12/24 2:21:46

就是训练数据无标签,算法自动对数据进行分类,听着很神奇,但学了机器学习以后,除了神经网络比较悬,对人像是个黑盒,别的都是基于数学的分类算法,无监督学习也不例外。

聚类—K-means算法

坐标轴上有一堆数据,要把他们当中更像的划分在一起,如何实现呢?这就是K-means算法的思想,该算法通过如下步骤实现该功能:
1,随机猜测,随机选择两个或多个中心点,其他点根据到中心点的距离分配所属集群,此时就得到了按到中心点距离划分的多个集群;
2,移动中心,因为中心点随机划分,并不能代表集群都是相近的数据,对一个集群内的所有点求平均位置,将中心点移至该处;
3,重新计算集群归属,根据中心点现有位置重新确认数据点所属的集群;
4,重复2、3,直到中心点位置不发生变化。

图解过程大致如下:
k-means图解
详细说明如下:
随机选取k个中心点u1u2、、、uk
分别计算距离最近的数据点,并归类为ci
评价聚类算法同样通过一个成本函数来实现,此处为失真函数,表示各数据点到中心点距离平方和的平均,数学定义如下:
聚类算法成本函数
聚类算法的目的在于最小化失真函数,即让中心点所属数据离中心点距离最短,该算法每次调整后失真函数应该下降或不变,若上升了则说明算法有bug。

中心点选取

首先是位置选取,由于选择中心点不同最后的分类也会不同,只能通过不断地尝试找到相对较小的分类方法并认定其为最佳,通常做法随机选取k个数据点作为中心,多次允许将不同集群的失真函数J作比较。

k的数量决定划分的种类,该做法并无确定唯一的答案,同样可以通过多次选择k计算失真函数比较,分类数量越多无疑会使J变小,如果k等于m了那J就是0,所以盲目追求最佳的J是无意义的,不过仍然有一种情况可以明显确定k的选取——肘方法。
即绘制分类数量与J的曲线,当下降斜率出现突然变缓处说明继续增加分类数量效果不再明显,类似胳膊的肘部,可以选取之。
可多数情景下曲线并无肘部,平滑曲线难以判断肘部,主要还是根据项目选择需要几种分类。

异常检测

只对不正常的事件进行预警,使用密度技术检测,若特征反常则报警,根据正态分布p(x,μ,σ^2) = (1 / (σ√(2π))) * e^((-1/2) * ((x-μ)/σ)^2)建立概率模型,设定阈值ε,若概率低于该值则说明异常,多用于金融诈骗等情景。

检测过程大致如下:
1,输入特征x1,x2...xn
2,拟合u和δ,公式分别为拟合u拟合
3,计算预测值p(x),公式为预测异常概率,即多种异常情况同时发生的概率,若预测值小于阈值,说明异常发生。

对比监督学习

异常检测更适用于反面例子多,并且在不断出现新错误的情况,如网络攻击,更适用于安全问题
有监督学习适用于规则相对固定的学习,如垃圾邮件。

推荐算法

首先在没学习该章之前,我们可以先思考以下,软件推荐电影,短视频,甚至广告等都是如何实现的呢?我之前想的是每种视频及广告或者商品本身应该有其标签,比如动作、喜剧等,而软件对我们用户应该也有画像,比如是男大学生,新手妈妈等,将标签符合的人物画像的内容进行推送,并且结合搜索记录等综合考虑。这种方法难点在于标签和画像如何形成,数量太大难以全部人工审核,上传者和用户自己设定是个方法,但毕竟不全又可能造假,我是带着这个疑问来学推荐算法部分。

首先声明代号,nu表示用户数量,nm表示推荐内容的数量,r(i,j)表示是否对用户推荐,取值只有0、1,y(i,j)推荐程度,只当r为1时存在,比如影评打星,表示用户的喜爱程度。
这个预测过程我们使用线性回归即可实现,输出一个可能喜欢的值,但使用该方法如何在用户画像尚未建立,即wb还未拟合准确时判断呢?新电影刚上映,特征尚不完善又如何归类呢?也就是我之前想到的标签或者画像的形成问题,该问题可以通过协同过滤来解决。

协同过滤

将用户和推荐内容特征成本函数整合在一起,形成如下表达式:
协同过滤成本函数
使用梯度下降同时推三个变量即可,从逻辑上来说,就是从用户选择推电影特征,再由电影特征推用户喜好。

协同过滤二进制推广

如果只要确定用户是否喜欢,比如用户若点击广告,则以后多给推送,可以使用logistic回归,激活函数设置未g(wx+b)即可。

均值归一化

上述算法若使用正则化使w最小,可能导致wb均为0,从而给新用户预测的所有电影都未0,故用户的预测可以改为wx+b+u,其中u=原有预测-平均喜好,作为新用户初步预测的初始值。

相关推荐

给用户推荐相近内容时可用xk-xi的平方和作为指标,值较小则说明内容类似,可以推荐。

缺点

协同过滤不擅长冷启动,即新用户和新内容时的模型建立,完全依赖学习过程中的特征和用户画像建立,但实际中用户注册或推荐内容中会包含很多信息,比如性别、年龄、推荐内容的比如出版商、导演或作者等,使用这些信息可以帮我们更快地建立起模型。

基于内容的过滤

基于用户和内容的特性,可以更好地使用内容特征和用户画像,根据用户画像找相似的推荐内容特征,对用户画像的预测用Vu表示,对推荐内容的预测用Vm表示,模型建立过程为:
1,用户的基本信息进入神经网络学习,输出Vu
2,电影基本信息进入神经网络,输出特征Vm——二者输出层大小相同
3,使用g(v,m)逻辑回归计算推荐概率

使用该神经网络方法肯定需要大量计算,但好在推荐内容信息在本地存储,其特征可以提前计算,推荐时仅需计算用户特征并预测即可,此外该方法也体现了神经网络可组合的优点,大致流程图如下:
内容过滤流程图

大目录推荐方法

已有数据很大时,每个用户都进行特征比较预测结果仍然太耗时,可能出现新用户注册后过一上午才有推荐内容的情况发生,针对这种大目录的推荐,一般分为两步走:

检索
提前计算更大范围可能推荐给用户的内容,将多种相似的内容添加到推荐列表中,做到广泛覆盖,进行组合后去重并过滤用户已选内容。

排名
该步对推荐内容进行微调,预测用户可能评级后进行排序后再展示给用户。

强化学习

旨在通过奖惩机制,让计算机学习到针对不同状态该采取何种行动的方法,常用于无法穷尽举例,难以获得可用数据集的情况,主要应用于机器人的控制、工厂生产和股票交易中,方法执行过程无需告知正确结果,只需指定奖励函数,计算机自行决定动作。

捡金币示例

捡金币
当前状态位置向右获得40金币,向左获得一百金币,机器肯定会选择向左移动,但向左需要三步才能获得金币,实际应用中考虑步骤可以通过折现折现实现,比如0.9*0.9*0.9*100,通过降低折现因子可以让算法找到最快的实现方法,但使用中我们大多采用接近1的数,如0.99,因为该算法控制的场景一般不怎么着急。

奖励也可设置为负,让算法选择推迟获得,基于上述场景,我们可以发现,机器学习的算法策略是选择最大,最近的回报,由当前状态state,决定要采取的行动action,其重中之重就是决定采取行动的方法——策略函数。

马尔可夫决策MDP

未来汇报取决于当前状态的决策方法,使用Q(s,a)状态动作值函数来量化决策,返回应当前状态s采取a行动的最高收益,如捡金币状态下的Q(4,右)=40Q(4,左)=100*0.9的三次方

可如果已知了最高收益还计算啥,判断来源又怎么计算呢?这需要借助贝尔曼方程实现。

贝尔曼方程

用于计算状态行动收益的最大值,用R(s)表示s状态的收益,如捡金币中R(1)=100R(2)=0,完整方程为Q(s,a)=R(s)+y*Q(s1,a1)max,即最大收益为s状态的奖励+系数*下阶段的最大奖励。

该方程将问题逐步向后拆解,可通过动态规划的思想给所有的行动可能计算出收益。

DQN算法

使用上面的方法只能接近离散状态空间的场景,通过维护一个Q(s,a)表实现,但当选择并不离散,有连续空间可以选择时又该怎么办呢?有人提出了一种Q学习加神经网络的算法,将状态s和行动a作为x输入神经网络,Q(s,a)作为y输出,使用有监督学习,可之前我们提到强化学习一般用于不好获取数据的场景,我们该如何训练网络呢?

获取数据的方法同样是通过贝尔曼方程,R(s)我们可以通过在拟真中随机尝试获得,但新状态下的Q我们不得而知-,暂时只能通过猜测假设,在后续网络训练中不断改进,二者相互促进,具体步骤如下:
1,神经网络参数初始化,几乎随机设定,后续训练逐步调整
2,拟真中任意尝试动作,获取不同的R(s),只保留最新的一万个数据作为输入x
3,y=R(s)+y*Q(s1,a1)max,起始的Q(s1,a1)不得而知只能猜测,随着神经网络的构建,可以逐步使用网络的输出y=Q(s1,a1)new来代替之

该算法是一个不断重复,逐渐改进,网络和贝尔曼方程逐步完善,相互促进的方法,也体现了网络的训练过程,并将其与其他未知参数的估计结合起来,达到两个未知经过神经网络变成已知的目的。

ε贪婪策略

初始化的参数可能导致某种行为a下的Q很低,先入为主,算法可能永远不会执行该动作,进而导致该方向的Q不会上升,基于这种场景,我们更改原有每次之选最大的Q(s,a)策略,改为95%的场景选最大,5%的场景随机选一个动作执行。

数值设定是探索与开发的权衡,选最大的效果好,但可能错过新方法,故一般设置为很小的值,偶尔尝试就可以,实际中ε应该随时间下降,初始可以设置的大一些因为网络建立还不完善。

另外其实贪婪的最大是Q,而不是只有5%的ε

优化方法

通过多次计算不同动作的Q(s,a)十分低效,可以直接输出多个单元,同时计算所有Q(s,a),对不同的行动一次推理获得其最大收益。

小批量处理—Mini-batch

梯度下降在数据量很大时需要计算所有数据的平均值,准确,但很慢,提出一种无需所有示例,每次迭代只取数据中一部分的方法,该方法速度快,但不可靠,是准确和效率的权衡。

软更新

在网络训练中,我们用新的数据直接替代旧数据会产生一个问题,如果该次数据是误差数据,或者网络模型错误估计了此次运算,会导致差数据覆盖了原有好的数据,整体训练方向可能发生便宜,为减少该行为造成的影响,我们将更新方法设置为W=0.01Wnew+0.99W,即每次只更新一点,使算法尽可能收敛,减少震荡。

总结

本章学习了无监督学习的一些算法,基于数据点距离中心点的分类方法—聚类,推荐算法的协同过滤,解决其冷启动难的内容过滤方法,和基于奖励函数让机器自己根据当前状态决定动作的强化学习,还有在强化学习中使用神经网络的DQN算法,该算法妙在多个未知参数可以经过神经网络的拟合逐渐变得可靠,随着网络模型建立的完善,对其他参数的估计也越来越准确,形成一个相互促进的局面。

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

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

相关文章

Postman下载安装~用于springboot控制层测试

第一步:下载安装 方法1:在线下载 Postman API Platform 方法2:百度网盘 通过百度网盘分享的文件:Postman-win64-Setup 链接:https://pan.baidu.com/s/16nNfKvuNfM8z4kP1Ad-K2Q?pwdotxe 提取码:otxe -…

见证中国数据库的崛起:从追赶到引领的壮丽征程《三》

见证中国数据库的崛起:从追赶到引领的壮丽征程《三》 三、深度思考:中国数据库发展的经验与启示产学研用结合的创新模式应用驱动的创新路径人才培养的关键作用 【纪录片】中国数据库前世今生 在数字化潮流席卷全球的今天,数据库作为IT技术领域…

Java高级流

高级流 java将IO分为了两类 节点流:又称为"低级流" 特点:直接链接程序与另一端的"管道",是真实读写数据的流IO一定是建立在节点流的基础上进行的。文件流就是典型的节点流(低级流) 处理流:又称为"高级流" 特点:不能独立存在&#x…

开源项目的发展趋势,以及参与开源项目可以获得的经验和成果,以及涉及到的注意事项

目录 一、当前开源项目的发展趋势 1. 全球化协作与社区增长 2. 多领域技术创新与迭代加速 3. 开放协作模式 4. 商业化与产业融合 5. 安全性与隐私保护 6. 跨界融合与生态构建 7. 政策支持 二、参与开源项目的经验和收获 1. 技术能力提升 2. 团队协作与沟通能力 3.领…

阿里微服务质量保障系列:异步通信模式以及测试分析

软件质量保障 所寫即所思|一个阿里质量人对测试的所感所悟。 1. 异步通信模式 最常见的方式就是异步消息通信。使用消息机制时,服务之间的通信采用异步交换消息的方式完成。基于消息机制的应 用程序通常使用消息代理,它充当服务之间的中介。另一种选择是使用无代理架构,通…

实验室自动测试系统产品化注意问题

在实验室开发的自动测试系统转向产品化时,需要综合考虑多个方面,以确保系统的稳定性、可靠性和可维护性。以下是一些关键问题和建议: 1. 硬件选择与兼容性 在实验室中,可能会使用一些专业的实验设备或定制的硬件,但在…

一文带你掌握C++模版

12. C模板 什么是模板 模板编程也可以叫做泛型编程,忽略数据类型的一种编程方式 //求最值问题 int Max(int a,int b) {return a>b?a:b; } double Max(int a,int b) {return a>b?a:b; } string Max(string a,string b) {return a>b?a:b; …

搭建Nginx正向代理服务器,轻松实现外部网络请求的转发

​ 本文将介绍如何使用Nginx搭建一个简单的正向代理服务器,实现外部网络请求的转发。通过设置正向代理,我们可以隐藏真实的服务器地址,提高访问速度,以及增强网络安全性 一、Nginx正向代理简介 正向代理(Forward Pro…

基于node的学生公寓管理系统-计算机毕设 附源码 06412

基于node的学生公寓管理系统 摘 要 本论文主要论述了如何使用Node.js框架和Express框架开发一个基于Node的学生公寓管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S结构,面向对象编程思想进行项目开发。在引言中&#xff0…

无人机环保行业解决方案-应急环境污染处理

无人机环境应急处理 传统环境应急的典型挑战 发生环境应急事件时,最重要的是快速获取前方信息。然而,有毒气体 和易燃易爆品多,存在二次爆炸风险,严重威胁人身安全。无人机可快 速赶到事故现场,查看周边环境、污染物…

免费开源的搜索工具,支持搜索文件内容,绿色免安装

dnGrep是一款功能强大的开源Windows搜索工具,旨在帮助用户高效地在各种文档和压缩文件中查找文本内容。它支持多种查询方式,包括文本、正则表达式(Regex)、XPath以及音序查询。 dnGrep主要功能: 多格式支持&#xff…

网络安全学习平台top10_网络安全训练平台

前言 1.Hack In The Box:http://www.hackinthebox.org/ 2.Hellbound Hackers:https://www.hellboundhackers.org/ 3.Exploit Database:https://www.exploit-database.net/ 4.Hacking-Tutorial:https://www.hacking-tutorial.c…

【Python实战】如何优雅地实现 PDF 去水印?

话接上篇,自动化处理 PDF 文档,完美实现 WPS 会员功能 小伙伴们更关心的是如何去除 PDF 中的水印~ 今天,就来分享一个超简单的 PDF 去水印方法~ 1. 原理介绍 在上一篇中,我们介绍了如何将 PDF 文档转换成图片,图片…

前端必知必会-html中input的type设置

文章目录 HTML type的设置输入类型文本输入类型密码输入类型提交输入类型重置输入类型单选按钮输入类型复选框输入类型按钮输入类型颜色输入类型日期输入类型 Datetime-local输入类型电子邮件输入类型图像输入类型 文件输入类型 隐藏输入类型 月份输入类型 数字输入类型范围输入…

更换收银系统时如何迁移会员数据

系统介绍 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步,如商品…

js 实现数组转树形数据(2024-08-01)

要将数组转换为树形结构,通常需要一个数组,其中每个元素都包含一个父节点的引用。以下是一个使用JavaScript实现的函数,假设每个元素都有一个唯一的 【id 】和一个指向其父元素的【pId】 /*** 数组转树形结构* param {array} list 被转换的数…

【编程刷级之路】大学新生的最佳入门攻略

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 目录 引言 方向一:编程语言选择 方向二:学习资源推荐 方向三:学…

django体育器材后台管理系统-毕业设计源码45411

django体育器材后台管理系统 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学…

对抗搜索Adversary Search与Minmax算法(含python代码)

Adversary Search,也称为对抗搜索,是人工智能中的一种算法策略,主要用于解决那些需要两个或多个对手在完全或部分信息的环境下对抗的问题。这种类型的搜索算法广泛应用于各种策略游戏,如国际象棋、围棋、和井字游戏,其…

张宇1000题/660/880/武忠祥严选题,哪本优先级高?最接近真题?

使用资料: 武老师强化班视频高数辅导讲义严选题 具体操作: 预习讲义10页听课做严选题 情况一:基础阶段跟着武老师并且完成660的同学。 这些同学在强化阶段可以在使用上述资料的基础上,再加一本李林老师的880题。可能有同学不…