机器学习 - Machine Learning (III)

news/2024/11/15 6:05:06/文章来源:https://www.cnblogs.com/Arcticus/p/18306578

1 对抗学习

对抗学习的目的是增加鲁棒性。

对抗生成网络(GAN)包括生成器(Generator)和判别器(Discriminator)。如果目标是创建能够生成新内容的系统,那么生成器是希望得到并优化的模型,这是一个零和问题。

1.1 GenB

GenB是对抗网络用于VQA的产物,如图添加了偏置模型和目标模型。

训练偏置模型

传统的VQA损失函数是BCE,即

\[\mathcal L_{GT}(F_{b,G})=\mathcal L_{BCE}(\sigma(F_{b,G}(z,q),y_{gt})) \]

在这个情境下,额外引入对抗训练,对于损失函数

\[\mathcal L_{GAN}(F_{b,G},D)=\mathbb E_{y}(\log D(y))+\mathbb E_{y_b}(\log(1-D(y_b))) \]

生成器希望损失函数尽可能小,判别器希望损失函数尽可能大。

此外,还用知识蒸馏的方法训练偏置模型

\[\mathcal L_{distill}(F_{b,G})=\mathbb E_{v,q,z}(D_{KL}(F(v,q)||F_{b,G}(z,q))) \]

整体损失函数是

\[\mathcal L_{GenB}(F_{b,G},D)=\mathcal L_{GAN}(F_{b,G},D)+\lambda_1 \mathcal L_{distill}(F_{b,G})+\lambda_2 \mathcal L_{GT}(F_{b,G}) \]

纠正偏置模型

纠正偏见过程的损失函数定义为

\[\mathcal L_{target}(F)=\mathcal L_{BCE}(y,y_{DL}) \]

其中

\[y_{DL}=\text{min}(1,2\cdot y_{gt}\cdot\sigma (-2\cdot y_{gt}\cdot y_b)) \]

\(y_{gt},y_b\)分别代表真实答案和偏置答案。

2 迁移学习

迁移学习的目的是减少计算复杂度。

迁移学习通常是将一个在相关任务上已经训练好的模型应用到一个新的但相似的任务上。具体做法包括在特征提取器的输出上添加新的全连接层或其他分类层,以适应特定任务,然后对模型进行微调。

2.1 知识蒸馏

知识蒸馏用于将一个大型、复杂的教师模型的知识转移给一个更小、更简单的学生模型。教师模型的输出(Softmax层)包含对不同类别的预测概率,学生模型在训练过程中模仿教师模型的输出概率分布。

3 强化学习

强化学习的目的是最大化策略奖励。

强化学习的基本流程如下:

  • 初始化:智能体和环境的初始状态。
  • 观测:智能体在环境中观察当前状态。
  • 选择行动:智能体根据其策略选择一个行动。
  • 执行行动:智能体在环境中执行选定的行动。
  • 获得奖励:智能体从环境中接收该行动的奖励反馈。
  • 更新状态:环境根据智能体的行动更新状态。
  • 学习更新:智能体利用获得的奖励和新的状态,更新其策略或价值函数。
  • 重复:重复以上步骤直到满足停止条件。

3.1 AlphaGo

AlphaGo由MCTS(蒙特卡罗树搜索)和两个卷积神经网络(策略网络预测下法、价值网络预测胜率)组成。

MCTS由四部分构成:

  • 选择:从根节点开始,根据UCB算法得到子节点的顺序,沿着搜索树向下进行,直到遇到一个没有完全展开的子节点。
  • 扩展:扩展出可能的下一步棋局,增加新的子节点。
  • 模拟:从新扩展的节点开始进行模拟,随机选择动作,直到到达终局。
  • 反向传播:将模拟结果从叶节点回传到根节点,更新所有经过节点的统计数据,重新计算UCB。

结合CNN的MCTS如下:

  • 选择:使用CNN的输出来指导选择优先扩展的节点,然后再用UCB作选择,直到遇到一个没有完全展开的子节点。
  • 扩展:使用策略网络为新节点的所有下一步走法分配初始的概率分布。
  • 模拟:使用策略网络模拟,当模拟达到预设的深度限制时(而不是完整的终局)停止模拟。在此中间状态,调用价值网络来评估该状态的胜率。
  • 反向传播:将价值网络的胜率估计从当前中间状态回传到根节点,更新所有经过节点的统计数据。

UCB公式如下:

\[UCB(s,a)=Q(s,a)+c\cdot P(s,a)\cdot \sqrt{\frac{\ln N(s)}{N(s,a)+1}} \]

其中:

  • \(Q(s,a)\)是动作\(a\)在状态\(s\)下的平均价值(exploitation)。
  • \(P(s,a)\)是策略网络输出的在状态\(s\)下选择动作\(a\)的概率。
  • \(N(s)\)是状态\(s\)被访问的次数。
  • \(N(s,a)\)是在状态\(s\)下选择动作\(a\)的次数(exploration)。
  • \(c\)是一个常数,控制exploration和利用exploitation之间的平衡。

4 半监督学习

半监督学习的目的是解决标记数据稀缺的问题。

半监督学习介于监督学习和无监督学习之间。监督学习中模型训练完全依赖于标记的数据集;无监督学习中模型则是基于没有任何标签的数据进行训练。半监督学习利用少量的标记数据和大量的未标记数据来训练模型。

自训练是一种简单的半监督学习策略,其中首先使用有标签的数据训练一个初始模型,然后这个模型用来预测未标记数据的标签,选择预测最有信心的数据点及其标签重新加入训练集,再次训练模型,不断迭代进行。

5 联邦学习

联邦学习的目的是保护隐私。

联邦学习是一种在不同本地设备或节点上分别训练模型后,将更新的模型参数汇总到中央服务器进行联邦平均的方法。特别是在医院等数据隐私敏感的情况下,各个医院分别在本地使用患者数据独自训练模型,然后将训练得到的模型更新发送到中央服务器。中央服务器聚合这些更新,以更新全局模型。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS运行出现此网站无法提供安全连接

场景: SVN获取项目出现冲突后进行处理。 VS运行页面出现此网站无法提供安全连接尝试:清理VS缓存、重启电脑、重启VS、删除项目重新下载、禁用SSL3.0等等(以上都无效) 理解:开启另一个项目运行正常,说明IIS没有坏;删除项目重新下载运行排除项目配置问题(WebConfig等)。…

「代码随想录算法训练营」第十三天 | 二叉树 part3

110. 平衡二叉树题目链接:https://leetcode.cn/problems/balanced-binary-tree/ 题目难度:简单 文章讲解:https://programmercarl.com/0110.平衡二叉树.html 视频讲解:https://www.bilibili.com/video/BV1Ug411S7my 题目状态:通过思路: 采用递归的方式,遍历每个节点的左…

京东云智能编程助手与安全大模型双双获奖!

人工智能大模型浪潮迭起,为更好地推广人工智能应用案例,中国通信工业协会及中国通信工业协会人工智能专委会近日发布《CCIA2023年度人工智能优秀案例》,京东云申报的Joycoder智能编程助手入选“AI技术创新应用”,京东云与深圳市信息安全管理中心联合申报的“安全大模型保障…

京东上万程序员都AI用它!

7月3日,中国信息通信研究院在全球数字经济大会上发布“2024安全守卫者计划优秀案例”,基于京东云智能编码工具JoyCoder研发的“京东微调大模型驱动漏洞修复”入选优秀案例。 该漏洞修复助手,能够对大模型生成代码进行智能修复,为程序员开启代码漏洞修复的“自动驾驶”模式,…

【YashanDB知识库】oracle dblink varchar类型查询报错记录

问题单:Oracle DBLINK查询崖山DB报错 oracle服务器上ODBC安装 unixodbc安装:yum -y install unixODBC mysql 配置安装对应版本的odbc: myodbc-installer -d -a -n "MySQL8.0" -t "DRIVER=/home/oracle/tools/mysql-connector-odbc-8.0.20/lib/libmyodbc8w.so…

以电商、消费行业为例,详解火山引擎数智平台如何应用湖仓一体架构

湖仓一体架构是一种将数据湖和数据仓库的优势结合起来的新型数据架构。作为新一代企业级数据产品,火山引擎数智平台在旗下产品中对湖仓一体架构进行深入探索和应用,本篇将从数据湖内核、服务设计及应用场景等方面进行详细拆解。更多技术交流、求职机会,欢迎关注字节跳动数据…

负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】

负载均衡-Ribbon-微服务核心组件【分布式微服务笔记03】 负载均衡-Ribbon 基本介绍Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡的工具。 Ribbon 主要功能是提供客户端负载均衡算法和服务调用 Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试…

创建第一个flask程序,读取本地static静态文件

需要安装flask :  pip install flask 项目目录结构: 代码: from flask import Flaskapp = Flask(__name__,static_url_path=/static,static_folder=static)@app.route(/)def hello_world(): return Hello World!if __name__ == __main__: app.run(host="0.0.0.…

ComfyUI进阶:Comfyroll插件 (二)

ComfyUI进阶:Comfyroll插件 (二)前言:学习ComfyUI是一场持久战,而Comfyroll Studio 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业的图像生成与编辑工具。借助这些节点,用户可以在静态图像的精细调整和动态动画的复杂构建方面进行深入探…

zr 摆烂记

你说得对,我也不知道怎么整合到数数论论里。 \((a,b)=1\) 是 \(ax\equiv 1(\bmod b)\) 有解的充要条件。 首先,对于 \(x=0\rightarrow b-1\),\(ax\equiv y(\bmod b)\),\(y\) 互不相同。 证明考虑加加减减。 考虑求出这个解,得到 \(ax=by+1\)。 不难有推论:若 \((a,b)=1\)…

WKCTF RE

WKCTF so_easy 安卓逆向,关键的check逻辑都在native层里面主要是很多层的异或操作除了Z3和爆破想不到其他方法了 from z3 import *src = [ 0xAE, 0x81, 0xBA, 0xC1, 0xF0, 0x95, 0x0A, 0x54, 0x14, 0x03, 0x4A, 0xE2, 0x52, 0x4E, 0x84, 0xF8, 0xC9, 0x3E, 0x14, 0x98, 0x8F,…

Java - 多线程

ThreadLocalhttps://www.cnblogs.com/fsmly/p/11020641.html 为了线程安全,每个线程改的都是自己本地的副本,从而不会影响其它线程。多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的…