20240317-2-推荐算法FTRL

FTRL

在这里插入图片描述

FTRL(Follow the Regularized Leader) 由Google的H. Berendan McMahan 等人于2010年提出【4】,FTRL是一种在线最优化求解算法,结合L1-FOBOS和L1-RDA算法,用于解决在线学习中,权重参数不能产生较好的稀疏性的问题。
由于在线学习涉及内容较多,本文从提升模型稀疏性的角度入手,简单介绍经典的TG, L1-FOBOS, L1-RDA 和 FTRL 算法的原理。

模型稀疏性

众所周知,Lasso对权重参数(W)引入L1正则项使得模型的训练结果具有稀疏性,稀疏的模型不仅有变量选择的功能,同时在模型线上进行预测时,可以大大减小运算量。但是在在线学习的场景下,利用SGD的方式进行权重参数(W)的更新,每次只使用一个样本,权重参数的更新具有很大的随机性,无法将权重参数准确地更新为0。为解决这一问题,TG, L1-FOBOS, L1-RDA,FTRL 等一系列算法被提出。

TG(Truncated Gradient)

为了得到具有稀疏性的权重参数(W),最简单的方法就是引入一个阈值,当某个权重参数的值小于该阈值就将其置0。TG方法就是在这个想法的基础上,稍加改进,使用如下式的梯度更新方式。
W ( t + 1 ) = T 1 ( W ( t ) − η ( t ) G ( t ) , η ( t ) λ ( t ) , θ ) W^{(t+1)}=T_{1}\left(W^{(t)}-\eta^{(t)} G^{(t)}, \eta^{(t)} \lambda^{(t)}, \theta\right) W(t+1)=T1(W(t)η(t)G(t),η(t)λ(t),θ)
T 1 ( v i , α , θ ) = { max ⁡ ( 0 , v i − α )  if  v i ∈ [ 0 , θ ] min ⁡ ( 0 , v i + α )  if  v i ∈ [ − θ , 0 ] v i  otherwise  T_{1}\left(v_{i}, \alpha, \theta\right)=\left\{\begin{array}{ll} \max \left(0, v_{i}-\alpha\right) & \text { if } v_{i} \in[0, \theta] \\ \min \left(0, v_{i}+\alpha\right) & \text { if } v_{i} \in[-\theta, 0] \\ v_{i} & \text { otherwise } \end{array}\right. T1(vi,α,θ)= max(0,viα)min(0,vi+α)vi if vi[0,θ] if vi[θ,0] otherwise 
其中 G ( t ) G^{(t)} G(t)是当前参数的梯度, η ( t ) \eta^{(t)} η(t)是学习率, λ ( t ) \lambda^{(t)} λ(t)控制梯度阶段发生的频次,每k次进行一次梯度截断。 θ \theta θ为梯度截断时设置的阈值。通过调节 λ , θ \lambda,\theta λ,θ可以权重参数的稀疏性。

λ ( t ) = { k λ , t   m o d   k = 0 0 , o t h e r w i s e \lambda^{(t)}=\left\{ \begin{aligned} k\lambda & , & t\ mod\ k = 0 \\ 0 & , & otherwise \end{aligned} \right. λ(t)={0,,t mod k=0otherwise

L1-FOBOS

FOBOS(Forward-Backward Splitting)分两步更新权重。
W ( t + 1 2 ) = W ( t ) − η ( t ) G ( t ) W^{\left(t+\frac{1}{2}\right)}=W^{(t)}-\eta^{(t)} G^{(t)} W(t+21)=W(t)η(t)G(t)
W ( t + 1 ) = arg ⁡ min ⁡ W { 1 2 ∥ W − W ( t + 1 2 ) ∥ 2 + η ( t + 1 2 ) Ψ ( W ) } W^{(t+1)}=\arg \min _{W}\left\{\frac{1}{2}\left\|W-W^{\left(t+\frac{1}{2}\right)}\right\|^{2}+\eta^{\left(t+\frac{1}{2}\right)} \Psi(W)\right\} W(t+1)=argWmin{21 WW(t+21) 2+η(t+21)Ψ(W)}

FOBOS的第一步就是正常的梯度下降算法,第二部对W进行调整,引入正则项使得参数具有稀疏性。将以上两部转换为一步,可以有如下表达。
W ( t + 1 ) = argmin ⁡ W { 1 2 ∥ W − W ( t ) + η ( t ) G ( t ) ∥ 2 + η ( t + 1 2 ) Ψ ( W ) } W^{(t+1)}=\operatorname{argmin}_{W}\left\{\frac{1}{2}\left\|W-W^{(t)}+\eta^{(t)} G^{(t)}\right\|^{2}+\eta^{\left(t+\frac{1}{2}\right)} \Psi(W)\right\} W(t+1)=argminW{21 WW(t)+η(t)G(t) 2+η(t+21)Ψ(W)}

实际使用中,将FOBOS中的正则算子 Ψ ( W ) \Psi(W) Ψ(W)替换成 λ ∥ W ∥ 1 \lambda\Vert W\Vert_{1} λW1,通过数学推导,最终可以获得如下的梯度新公式。
w i ( t ) = s g n w i ( t ) − η ( t ) g i ( t ) ) max ⁡ ( 0 , ∣ w i ( t ) − η ( t ) g i ( t ) ∣ − η ( t + 1 2 ) λ ) w_i^{(t)}=sgnw_{i}^{(t)}-\eta^{(t)}g_i^{(t)})\max(0, \vert w_{i}^{(t)}-\eta^{(t)}g_i^{(t)}\vert - \eta^{(t+\frac{1}{2})}\lambda) wi(t)=sgnwi(t)η(t)gi(t))max(0,wi(t)η(t)gi(t)η(t+21)λ)
从公式中可以发现,一旦权重参数更新后的值 ∣ w i ( t ) − η ( t ) g i ( t ) ∣ \vert w_{i}^{(t)}-\eta^{(t)}g_i^{(t)}\vert wi(t)η(t)gi(t)小于 η ( t + 1 2 ) λ \eta^{(t+\frac{1}{2})}\lambda η(t+21)λ就将改权重参数置0。

L1-RDA

RDA(Regularized Dual Average)是牺牲一定精度,进一步提升权重参数稀疏性的方法,如下是L1-RDA使用的权重参数更新公式。
W ( t + 1 ) = arg ⁡ min ⁡ W { 1 t Σ r = 1 t G ( r ) ⋅ W + λ ∥ W ∥ 1 + γ 2 t ∥ W ∥ 2 2 } W^{(t+1)}=\underset{W}{\arg\min}\{\frac{1}{t}\Sigma_{r=1}^t G^{(r)}\cdot W+\lambda\Vert W\Vert_1 + \frac{\gamma}{2\sqrt t}\Vert W\Vert_{2}^2\} W(t+1)=Wargmin{t1Σr=1tG(r)W+λW1+2t γW22}
其中 Σ r = 1 t G ( r ) \Sigma_{r=1}^t G^{(r)} Σr=1tG(r)是历史的梯度的平均值。
通过数学推导L1-RDA有如下等价的参数更新公式。
w i ( t + 1 ) = { 0   , i f ∣ g ˉ i ( t ) < λ − t γ ( g ˉ i ( t ) − λ s g n ( g ˉ i ( t ) ) ) , o t h e r w i s e w_i^{(t+1)}=\left\{ \begin{matrix} 0 \ & , & if \vert \bar{g}_i^{(t)} < \lambda \\ -\frac{\sqrt{t}}{\gamma}(\bar g _i ^{(t)}-\lambda sgn(\bar g_i^{(t)})) & , & otherwise \end{matrix} \right. wi(t+1)={0 γt (gˉi(t)λsgn(gˉi(t))),,ifgˉi(t)<λotherwise
从公式中可以发现,一旦权重参数的历史平均梯度小于阈值 λ \lambda λ就将该权重参数置0。

FTRL

通常情况下,L1-FOBOS在计算最优解的精度上较高,而L1-RDA在损失一定精度的前提下可以获得更加稀疏的权重参数(W)。FTRL结合L1-FOBOS和L1-RDA的优点而产生的算法。
通过数学推导,L1-FOBOS可以写为:
W ( t + 1 ) = arg ⁡ min ⁡ W { G ( t ) ⋅ W + λ ∥ W ∥ 1 + 1 2 η ( t ) ∥ W − W ( t ) ∥ 2 2 } W^{(t+1)}=\arg \min _{W}\left\{G^{(t)} \cdot W+\lambda\|W\|_{1}+\frac{1}{2 \eta^{(t)}}\left\|W-W^{(t)}\right\|_{2}^{2}\right\} W(t+1)=argWmin{G(t)W+λW1+2η(t)1 WW(t) 22}
L1-RDA可以写为:
W ( t + 1 ) = arg ⁡ min ⁡ W { G ( 1 : t ) ⋅ W + t λ ∥ W ∥ 1 + 1 2 η ( t ) ∥ W − 0 ∥ 2 2 } W^{(t+1)}=\arg \min _{W}\left\{G^{(1: t)} \cdot W+t \lambda\|W\|_{1}+\frac{1}{2 \eta^{(t)}}\|W-0\|_{2}^{2}\right\} W(t+1)=argWmin{G(1:t)W+tλW1+2η(t)1W022}
其中 G ( 1 : t ) = Σ i t G ( i ) 其中G^{(1: t)}=\Sigma_i^t G^{(i)} 其中G(1:t)=ΣitG(i)

FTRL结合上两时,可以写作:
W ( t + 1 ) = arg ⁡ min ⁡ W { G ( 1 : t ) ⋅ W + λ 1 ∥ W ∥ 1 + λ 2 1 2 ∥ W ∥ 2 2 + 1 2 ∑ s = 1 σ ( s ) ∥ W − W ( s ) ∥ 2 2 } W^{(t+1)}=\arg \min _{W}\left\{G^{(1: t)} \cdot W+\lambda_{1}\|W\|_{1}+\lambda_{2} \frac{1}{2}\|W\|_{2}^{2}+\frac{1}{2} \sum_{\mathrm{s}=1} \sigma^{(s)}\left\|W-W^{(s)}\right\|_{2}^{2}\right\} W(t+1)=argWmin{G(1:t)W+λ1W1+λ221W22+21s=1σ(s) WW(s) 22}
其中引入 ∥ W ∥ 2 2 不会影响稀疏性,同时会使解更加“光滑”。 其中引入\Vert W\Vert_2^2不会影响稀疏性,同时会使解更加“光滑”。 其中引入W22不会影响稀疏性,同时会使解更加光滑

通过数学推导,FTRL有如下表达形式:
w i ( t + 1 ) = { 0  if  ∣ z i ( t ) ∣ < λ 1 − ( λ 2 + ∑ s = 1 t σ ( s ) ) − 1 ( z i ( t ) − λ 1 sgn ⁡ ( z i ( t ) ) )  otherwise  w_{i}^{(t+1)}=\left\{\begin{array}{ll} 0 & \text { if }\left|z_{i}^{(t)}\right|<\lambda_{1} \\ -\left(\lambda_{2}+\sum_{s=1}^{t} \sigma^{(s)}\right)^{-1}\left(z_{i}^{(t)}-\lambda_{1} \operatorname{sgn}\left(z_{i}^{(t)}\right)\right) & \text { otherwise } \end{array}\right. wi(t+1)= 0(λ2+s=1tσ(s))1(zi(t)λ1sgn(zi(t))) if  zi(t) <λ1 otherwise 
Z ( t ) = G ( 1 : t ) − ∑ s = 1 t σ ( s ) W ( s ) Z^{(t)}=G^{(1: t)}-\sum_{s=1}^{t} \sigma^{(s)} W^{(s)} Z(t)=G(1:t)s=1tσ(s)W(s)

##总结
本文简单梳理了在线学习中提升权重参数稀疏性的算法的思想,公式较为繁多。对其中的基础知识和公式推导感兴趣的小伙伴可以参考冯扬的《在线最优化求解》【1】,对于FTRL的工程实现感兴趣的小伙伴可以参阅H. Brendan McMahan 等人于2013发表的论文【2】 ,【3】是2011年发表的一篇关于FTRL和FOBOS, RDA比较的论文。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

吴恩达深度学习笔记:浅层神经网络(Shallow neural networks)3.1-3.5

目录 第一门课&#xff1a;神经网络和深度学习 (Neural Networks and Deep Learning)第三周&#xff1a;浅层神经网络(Shallow neural networks)3.1 神经网络概述&#xff08;Neural Network Overview&#xff09; 第一门课&#xff1a;神经网络和深度学习 (Neural Networks an…

【数据结构与算法】算法复杂度

一、什么是复杂度&#xff1f; 程序执行时需要的计算量和内存空间&#xff0c;其中计算量是指时间复杂度&#xff0c;计算量大则需要时间久&#xff1b;内存空间是指空间复杂度和代码是否简洁无关&#xff0c;而是指计算机的cpu和内存计算复杂程度。 复杂度是数量级&#xff0…

Day43:WEB攻防-PHP应用SQL注入符号拼接请求方法HTTP头JSON编码类

目录 PHP-MYSQL-数据请求类型 PHP-MYSQL-数据请求方法 PHP-MYSQL-数据请求格式 知识点&#xff1a; 1、PHP-MYSQL-SQL注入-数据请求类型 2、PHP-MYSQL-SQL注入-数据请求方法 3、PHP-MYSQL-SQL注入-数据请求格式 PHP-MYSQL-数据请求类型 SQL语句由于在黑盒中是无法预知写法的…

Java代码基础算法练习-求给定范围内所有数之和-2024.03.22

任务描述&#xff1a; 输入两个整数n和 m(0<n<m<20)&#xff0c;求此范围内所有数据之和。(包括n和m) 任务要求&#xff1a; 代码示例&#xff1a; package march0317_0331;import java.util.Scanner;/*** 计算两个整数之间&#xff08;包括这两个整数&#xff09;所…

设计数据库之内部模式:SQL基本操作

Chapter4&#xff1a;设计数据库之内部模式&#xff1a;SQL基本操作 笔记来源&#xff1a; 1.《漫画数据库》—科学出版社 2.SQL | DDL, DQL, DML, DCL and TCL Commands 设计数据库的步骤&#xff1a; 概念模式 概念模式(conceptual schema)是指将现实世界模型化的阶段进而&…

Harbor高可用(nginx和keepalived)

Harbor高可用&#xff08;nginx和keepalived&#xff09; 文章目录 Harbor高可用&#xff08;nginx和keepalived&#xff09;1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设置时…

postman下载汉化以及使用

【2023全网最牛教程】10分钟快速上手Postman&#xff08;建议收藏&#xff09;_macbook postman打开慢-CSDN博客 Postman 汉化教程&#xff08;小白&#xff09;配置的具体操作_postman怎么设置中文-CSDN博客 上面是两篇参考的博客 postman是一款支持http协议的接口调试与测试…

大模型时代,5个最顶级的向量数据库

介绍5个向量数据库。 大模型时代&#xff0c;向量数据库彻底的火了&#xff0c;今天我分享业内最频繁使用的向量数据库&#xff0c;更多实践经验&#xff0c;可以文末参加我们的技术落地的讨论&#xff0c;喜欢本文记得收藏、关注、点赞。 1 Chroma 使用ChromaDB构建LLM应用程…

地平线 西之绝境完整版下载

版本介绍 v1.0.37.0|容量122GB|官方简体中文|支持键盘.鼠标.手柄|赠多项修改器 与埃洛伊同行&#xff0c;在危险壮美的边疆之地揭开种种未知的神秘威胁。此完整版可完整享受广受好评的《地平线 西之绝境™》内容和额外内容&#xff0c;包括在主线游戏后展开的后续故事“炙炎海…

Uni-app/Vue/Js本地模糊查询,匹配所有字段includes和some方法结合使用e

天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.第一步 需要一个数组数据 {"week": "全部","hOutName": null,"weekendPrice": null,"channel": "门市价","hOutId": 98,"cTime": "…

破解城市内涝难题:水文水动力模拟技术的智慧策略,复杂城市排水系统模型的建立

随着计算机的广泛应用和各类模型软件的发展&#xff0c;将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。本次培训将聚焦于综合利用GIS及CAD等工具高效地进行大规模城市排水系统水力模型的建立&#xff0c;利用SWMM实现排水系统水力模拟。讲解…

Jmeter测试计划

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

Docker之docker compose!!!!

一、概述 是 Docker 官方提供的一款开源工具&#xff0c;主要用于简化在单个主机上定义和运行多容器 Docker 应用的过程。它的核心作用是容器编排&#xff0c;使得开发者能够在一个统一的环境中以声明式的方式管理多容器应用的服务及其依赖关系。 也就是说Docker Compose是一个…

canvas跟随鼠标移动画带透明度的线

提示&#xff1a;canvas画线 文章目录 前言一、带透明度的线二、试错&#xff0c;只有lineTo的时候画&#xff0c;只有最后地方是透明度的三、试错&#xff0c;只存上一次的点&#xff0c;线会出现断裂的情况总结 前言 一、带透明度的线 test.html <!DOCTYPE html> &l…

Apipost智能Mock功能详解

在接口开发过程中&#xff0c;Mock功能可以帮助开发者快速测试和验证接口的正确性和稳定性&#xff0c;以便快速迭代和修复问题。Apipost推出智能Mock功能&#xff0c;可以在智能期望中填写一些触发条件&#xff0c;开启后&#xff0c;Apipost会根据已设置的触发条件&#xff0…

CMake简单使用02

有如下的目录结构 main.cpp func.h: func.cpp 外层的CMakeLists.txt #需求的最低cmake程序版本 cmake_minimum_required(VERSION 3.2)#本工程的名字&#xff0c;- OpenGL.sln project(OpenGL)#本工程支持的c版本 set(CMAKE_CXX_STANDARD 17)#搜索所有的.cpp&#xff0c;加…

【LeetCode】回溯

labuladong回溯 回溯算法秒杀所有排列-组合-子集问题 回溯 一个回溯问题&#xff0c;实际上就是遍历一棵决策树的过程&#xff0c;树的每个叶子节点存放着一个合法答案。你把整棵树遍历一遍&#xff0c;把叶子节点上的答案都收集起来&#xff0c;就能得到所有的合法答案。 站…

Unity---Lua语言

Lua Binaries Download 13.2 逻辑热更新——Lua1-3_哔哩哔哩_bilibili nil表示空 只有false和nil为false&#xff0c;其他值都为true ..连接两个字符串

docker基础(八)之docker commit,docker tag,docker cp,docker diff

文章目录 概述docker commit语法OPTIONS说明&#xff1a;docker commit --help实例使用场景 docker tag语法示例使用场景为什么要这样做呢&#xff1f; docker cp语法OPTIONS说明&#xff1a;docker cp --help示例 docker diff语法示例使用场景&#xff1a; 概述 用于学习和记…

Java学习day1

打开命令提示符&#xff08;cmd&#xff09;窗口&#xff1a; 按下winR键&#xff0c;输入cmd 按回车或点击确定&#xff0c;打开cmd窗口 常用cmd命令 盘符名称冒号&#xff08;D:)&#xff1a;盘符切换&#xff0c;示例表示由C盘切换到D盘 dir&#xff1a;查看当前路径下的内…