DPO算法推导
DPO
-
核心思想:直接使用偏好数据进行策略优化,省去
reward
模型策略优化。 -
技术背景知识:
首先给定prompt x,生成两个答案 ( y 1 , y 2 ) Π S F T ( y ∣ x ) (y_1,y_2)~\Pi^{SFT}(y|x) (y1,y2) ΠSFT(y∣x) ,并通过人工标注对比 y 1 , y 2 y_1,y_2 y1,y2 ,获得偏好结果(preference) y w ≻ y l ∣ x y_w\succ y_l|x yw≻yl∣x,其中 w w w和 l l l表示
win
和lose
。引入奖励模型 r r r , y 1 > y 2 y_1 > y_2 y1>y2 的概率可以表示为
p ( y 1 > y 2 ) = r ∗ ( x , y 1 ) r ∗ ( x , y 1 ) + r ∗ ( x , y 2 ) p(y_1 > y_2) = \frac{r^*(x,y_1)}{r^*(x,y_1)+ r^*(x,y_2)} p(y1>y2)=r∗(x,y1)+r∗(x,y2)r∗(x,y1)
为使得奖励函数均为正数,引入Bradley-Terry
模型。-
Bradley-Terry:
p ∗ ( y w ≻ y l ∣ x ) = e x p ( r ∗ ( x , y 1 ) ) e x p ( r ∗ ( x , y 1 ) ) + e x p ( r ∗ ( x , y 2 ) ) p^{*}(y_w\succ y_l|x) = \frac{exp(r^*(x,y_1))}{exp(r^*(x,y_1))+ exp(r^*(x,y_2))} p∗(yw≻yl∣x)=exp(r∗(x,y1))+exp(r∗(x,y2))exp(r∗(x,y1))
交叉熵:令 a x = e x p ( r ∗ ( x , y 1 ) ) a_x = exp(r^*(x,y_1)) ax=exp(r∗(x,y1)), a y = e x p ( r ∗ ( x , y 2 ) ) a_y = exp(r^*(x,y_2)) ay=exp(r∗(x,y2))
L o s s = − E ( a x , a y ) ∼ D [ l n a x a x + a y ] = − E ( x , y w , y l ) ∼ D [ l n e x p ( r ∗ ( x , y w ) ) e x p ( r ∗ ( x , y w ) ) + e x p ( r ∗ ( x , y l ) ) ] = − E ( x , y w , y l ) ∼ D [ l n 1 1 + e x p ( r ∗ ( x , y l ) − r ∗ ( x , y w ) ) ] = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) ] Loss = -E_{(a_x,a_y)\sim D}[ln\frac{a_x}{a_x+a_y}] \\ = - E_{(x,y_w,y_l)\sim D}[ln\frac{exp(r^*(x,y_w))}{exp(r^*(x,y_w))+exp(r^*(x,y_l))}] \\ = - E_{(x,y_w,y_l)\sim D}[ln\frac{1}{1+exp(r^*(x,y_l)-r^*(x,y_w))}] \\ = - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l))] \\ Loss=−E(ax,ay)∼D[lnax+ayax]=−E(x,yw,yl)∼D[lnexp(r∗(x,yw))+exp(r∗(x,yl))exp(r∗(x,yw))]=−E(x,yw,yl)∼D[ln1+exp(r∗(x,yl)−r∗(x,yw))1]=−E(x,yw,yl)∼D[lnσ(r∗(x,yw)−r∗(x,yl))] -
KL 散度:
K L ( P ∣ ∣ Q ) = ∑ x ∈ X P ( X ) l o g ( P ( X ) Q ( X ) ) KL(P||Q) = \sum_{x\in X}P(X)log(\frac{P(X)}{Q(X)}) KL(P∣∣Q)=x∈X∑P(X)log(Q(X)P(X))
P ( x ) , Q ( x ) P(x),Q(x) P(x),Q(x) 分别是数据真实分布和模型预测分布。
-
-
DPO
目标函数:获取更多的奖励,并尽可能保证与基准模型一致。
m a x π E x ∈ X , y ∈ π [ r ( x , y ) ] − β ⋅ D K L [ π ( y ∣ x ) ∣ ∣ π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ r ( x , y ) ] − E x ∈ X , y ∈ π [ β ⋅ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ r ( x , y ) − β ⋅ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ] = m a x π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) − 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) − l o g e x p ( 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) − l o g Z ( x ) ] \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y)] - \beta·\mathbb{D}_{KL}[\pi(y|x) || \pi_{ref}(y|x)] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y)] - E_{x\in X, y \in \pi}[\beta·log \frac{\pi(y|x)}{\pi_{ref}(y|x)}] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[r(x,y) - \beta·log \frac{\pi(y|x)}{\pi_{ref}(y|x)}] \\ = \underset{\pi}{max} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)}- \frac{1}{\beta}r(x,y))] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)}- log \ \ exp(\frac{1}{\beta}r(x,y))] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} - log \ \ Z(x) ] \\ πmaxEx∈X,y∈π[r(x,y)]−β⋅DKL[π(y∣x)∣∣πref(y∣x)]=πmaxEx∈X,y∈π[r(x,y)]−Ex∈X,y∈π[β⋅logπref(y∣x)π(y∣x)]=πmaxEx∈X,y∈π[r(x,y)−β⋅logπref(y∣x)π(y∣x)]=πmaxEx∈X,y∈π[logπref(y∣x)π(y∣x)−β1r(x,y))]=πminEx∈X,y∈π[logπref(y∣x)π(y∣x)−log exp(β1r(x,y))]=πminEx∈X,y∈π[logπref(y∣x)⋅exp(β1r(x,y))π(y∣x)]=πminEx∈X,y∈π[logZ(x)1πref(y∣x)⋅exp(β1r(x,y))π(y∣x)−log Z(x)]
令 Z ( x ) Z(x) Z(x) 表示如下:
Z ( x ) = ∑ y π r e f ( y ∣ x ) e x p ( 1 β r ( x , y ) ) Z(x) = \underset{y}{\sum} \pi_{ref}(y|x) exp(\frac{1}{\beta}r(x,y) ) Z(x)=y∑πref(y∣x)exp(β1r(x,y))
令:
1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) = π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) ∑ y π r e f ( y ∣ x ) e x p ( 1 β r ( x , y ) ) = π ∗ ( y ∣ x ) \frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y)) = \frac{\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))}{\underset{y}{\sum} \pi_{ref}(y|x) exp(\frac{1}{\beta}r(x,y) )} \\ = \pi^*(y|x) Z(x)1πref(y∣x)⋅exp(β1r(x,y))=y∑πref(y∣x)exp(β1r(x,y))πref(y∣x)⋅exp(β1r(x,y))=π∗(y∣x)
接下来继续对``dpo` 目标函数进行化简:
m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) − l o g Z ( x ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) − l o g Z ( x ) ] \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y))} - log \ \ Z(x) ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} - log \ \ Z(x) ] \\ πminEx∈X,y∈π[logZ(x)1πref(y∣x)⋅exp(β1r(x,y))π(y∣x)−log Z(x)]=πminEx∈X,y∈π[logπ∗(y∣x)π(y∣x)−log Z(x)]
由于 Z ( x ) Z(x) Z(x) 表达式与 π \pi π 不相关,优化可以直接省去。
m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) − l o g Z ( x ) ] = m i n π E x ∈ X , y ∈ π [ l o g π ( y ∣ x ) π ∗ ( y ∣ x ) ] = m i n π E x ∼ D [ D K L ( π ( y ∣ x ) ∣ ∣ π ∗ ( y ∣ x ) ) ] \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} - log \ \ Z(x) ] \\ = \underset{\pi}{min} E_{x\in X, y \in \pi}[log \frac{\pi(y|x)}{\pi^*(y|x)} ] \\ = \underset{\pi}{min} E_{x \sim D}[\mathbb{D}_{KL}(\pi(y|x) || \pi^*(y|x))] \\ πminEx∈X,y∈π[logπ∗(y∣x)π(y∣x)−log Z(x)]=πminEx∈X,y∈π[logπ∗(y∣x)π(y∣x)]=πminEx∼D[DKL(π(y∣x)∣∣π∗(y∣x))]
当 目标函数最小化,也就是 D K L \mathbb{D}_{KL} DKL 最小化,所满足的条件为:
π ( y ∣ x ) = π ∗ ( y ∣ x ) = 1 Z ( x ) π r e f ( y ∣ x ) ⋅ e x p ( 1 β r ( x , y ) ) \pi(y|x) = \pi^*(y|x) = \frac{1}{Z(x)}\pi_{ref}(y|x)·exp(\frac{1}{\beta}r(x,y)) π(y∣x)=π∗(y∣x)=Z(x)1πref(y∣x)⋅exp(β1r(x,y))
反解奖励函数 r ( x , y ) r(x,y) r(x,y)
r ( x , y ) = β π ( y ∣ x ) π r e f ( y ∣ x ) + β ⋅ l n Z ( x ) r(x,y) = \beta \frac{\pi(y|x)}{\pi_{ref}(y|x)} + \beta · ln \Z(x) r(x,y)=βπref(y∣x)π(y∣x)+β⋅lnZ(x)
求解奖励函数隐式表达后,带入Bradley-Terry
交叉熵函数:
L o s s = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) ] = − E ( x , y w , y l ) ∼ D [ l n σ ( β l o g π ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π ( y l ∣ x ) π r e f ( y l ∣ x ) ) ] Loss = - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l))] \\ =- E_{(x,y_w,y_l)\sim D}[ln \sigma(\beta log\frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} - \beta log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)})] Loss=−E(x,yw,yl)∼D[lnσ(r∗(x,yw)−r∗(x,yl))]=−E(x,yw,yl)∼D[lnσ(βlogπref(yw∣x)π(yw∣x)−βlogπref(yl∣x)π(yl∣x))]
到此,整个数学部分已推导完毕,不得不说句牛逼plus。
-
梯度表征:
将上述损失进行梯度求导
∇ θ L o s s ( π θ ; π r e f ) = − E ( x , y w , y l ) ∼ D [ β σ ( β l o g π ( y w ∣ x ) π r e f ( y w ∣ x ) − β l o g π ( y l ∣ x ) π r e f ( y l ∣ x ) ) [ ∇ θ l o g π ( y w ∣ x ) − ∇ θ l o g π ( y l ∣ x ) ] ] \nabla_\theta Loss(\pi_{\theta};\pi_{ref}) = - E_{(x,y_w,y_l)\sim D}[\beta \sigma(\beta log\frac{\pi(y_w|x)}{\pi_{ref}(y_w|x)} - \beta log \frac{\pi(y_l|x)}{\pi_{ref}(y_l|x)}) [\nabla_{\theta}log \pi(y_w|x) - \nabla_{\theta}log \pi(y_l|x) ]] ∇θLoss(πθ;πref)=−E(x,yw,yl)∼D[βσ(βlogπref(yw∣x)π(yw∣x)−βlogπref(yl∣x)π(yl∣x))[∇θlogπ(yw∣x)−∇θlogπ(yl∣x)]]
再令:
r ^ ( x , y ) = β π θ ( y ∣ x ) π r e f ( y ∣ x ) \hat{r}(x,y) = \beta \frac{\pi_{\theta}(y|x)}{\pi_{ref}(y|x)} r^(x,y)=βπref(y∣x)πθ(y∣x)
最终形式:
∇ θ L o s s ( π θ ; π r e f ) = − β E ( x , y w , y l ) ∼ D [ σ ( r ^ ∗ ( x , y w ) − r ^ ∗ ( x , y l ) ) ⏟ h i g h e r w e i g h t w h e n r e w a r d e s t i m a t e i s w r o n g [ ∇ θ l o g π ( y w ∣ x ) ⏟ i n c r e a s e l i k e l i h o o d o f y w − ∇ θ l o g π ( y l ∣ x ) ⏟ d e c r e a s e l i k e l i h o o d o f y l ] ] \nabla_\theta Loss(\pi_{\theta};\pi_{ref}) = -\beta E_{(x,y_w,y_l)\sim D}[\underbrace{\sigma(\hat{r}^*(x,y_w) -\hat{r}^*(x,y_l))}_{higher\ weight\ when\ reward\ estimate\ is\ wrong} [\underbrace{\nabla_{\theta}log \pi(y_w|x)}_{\ \ \ \ \ \ \ \ \ increase \ likelihood\ of\ y_w} - \underbrace{\nabla_{\theta}log \pi(y_l|x)}_{decrease \ likelihood \ of \ y_l} ]] ∇θLoss(πθ;πref)=−βE(x,yw,yl)∼D[higher weight when reward estimate is wrong σ(r^∗(x,yw)−r^∗(x,yl))[ increase likelihood of yw ∇θlogπ(yw∣x)−decrease likelihood of yl ∇θlogπ(yl∣x)]] -
改进方法ODPO
dpo
缺陷主要是:采用Bradley–Terry model
只给出了一个response
比另一个response
好的概率,而没有告诉我们好的程度。
odpo
核心思想: 把这个好的程度的差距信息引入到偏好的建模里,应该能带来收益,及在dpo
损失里添加margin
, 这相当于要求偏好回应
的评估分数要比非偏好回应
的评估分数大,且要大offset
值这么多。目的是:加大对靠得比较近的数据对的惩罚力度。
L o s s o d p o = − E ( x , y w , y l ) ∼ D [ l n σ ( r ∗ ( x , y w ) − r ∗ ( x , y l ) ) − δ r ] δ r = α l o g ( r ( y w ) − r ( y l ) ) Loss^{odpo}= - E_{(x,y_w,y_l)\sim D}[ln \sigma(r^*(x,y_w) -r^*(x,y_l)) - \delta_r] \\ \delta_r = \alpha \ log(r(y_w)- r(y_l)) Lossodpo=−E(x,yw,yl)∼D[lnσ(r∗(x,yw)−r∗(x,yl))−δr]δr=α log(r(yw)−r(yl))
-
相似改进方法:
IPO
KTO
都是不需要奖励模型的;
相关文章:
DPO算法推导
DPO 核心思想:直接使用偏好数据进行策略优化,省去 reward 模型策略优化。 技术背景知识: 首先给定prompt x,生成两个答案 ( y 1 , y 2 ) Π S F T ( y ∣ x ) (y_1,y_2)~\Pi^{SFT}(y|x) (y1,y2) ΠSFT(y∣x) ,并通…...
Qt源码分析:窗体绘制与响应
作为一套开源跨平台的UI代码库,窗体绘制与响应自然是最为基本的功能。在前面的博文中,已就Qt中的元对象系统(反射机制)、事件循环等基础内容进行了分析,并捎带阐述了窗体响应相关的内容。因此,本文着重分析Qt中窗体绘制相关的内容…...
docker 安装 禅道
docker pull hub.zentao.net/app/zentao:20.1.1 sudo docker network create --subnet172.172.172.0/24 zentaonet 使用 8087端口号访问 使用禅道mysql 映射到3307 sudo docker run \ --name zentao2 \ -p 8087:80 \ -p 3307:3306 \ --networkzentaonet \ --ip 172.172.172.…...
【简要说说】make 增量编译的原理
make 增量编译的原理 make是一个工具,它可以根据依赖关系和时间戳来自动执行编译命令。 当您修改了源代码文件后,make会检查它们的修改时间是否比目标文件(如可执行文件或目标文件)新,如果是,就会重新编译…...
DETRs Beat YOLOs on Real-time Object Detection论文翻译
cvpr 2024 论文名称 DETRs在实时目标检测上击败YOLO 地址 https://arxiv.longhoe.net/abs/2304.08069 代码 https://github.com/lyuwenyu/RT-DETR 目录 摘要 1介绍 2.相关工作 2.1实时目标探测器 2.2.端到端物体探测器 3.检测器的端到端速度 3.1.NMS分析 3.2.端到端速度…...
SpringBoot 多数据源配置
目录 一. 引入maven依赖包 二. 配置yml 三、创建 xml 分组文件 四、切换数据源 一. 引入maven依赖包 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.6.1&…...
RK3568驱动指南|第十六篇 SPI-第192章 mcp2515驱动编写:完善write和read函数
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…...
#BI建模与数仓建模有什么区别?指标体系由谁来搭建?
问题1: 指标体系是我们数仓来搭建还是分析师来做,如何去推动? 问题2:BI建模与数仓建模有什么区别? 指标体系要想做好,其实是分两块内容的,一块是顶层设计阶段,业务指标体系的搭建&am…...
如何用Python实现三维可视化?
Python拥有很多优秀的三维图像可视化工具,主要基于图形处理库WebGL、OpenGL或者VTK。 这些工具主要用于大规模空间标量数据、向量场数据、张量场数据等等的可视化,实际运用场景主要在海洋大气建模、飞机模型设计、桥梁设计、电磁场分析等等。 本文简单…...
chrome.storage.local.set 未生效
之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …...
泛微开发修炼之旅--30 linux-Ecology服务器运维脚本
文章链接:30 linux-ecology服务器运维脚本...
LeetCode 全排列
思路:这是一道暴力搜索问题,我们需要列出答案的所有可能组合。 题目给我们一个数组,我们很容易想到的做法是将数组中的元素进行排列,如何区分已选中和未选中的元素,容易想到的是建立一个标记数组,已经选中的…...
python实现支付宝异步回调验签
说明 python实现支付宝异步回调验签,示例中使用Django框架。 此方案使用了支付宝的pythonSDK,请一定装最新版本的,支付宝官网文档不知道多久没更新了,之前的版本pip安装会报一些c库不存在的错误; pip install alipay-…...
注意!Vue.js 或 Nuxt.js 中请停止使用.value
大家好,我是CodeQi! 一位热衷于技术分享的码仔。 当您在代码中使用.value时,必须每次都检查变量是否存在并且是引用。 这可能很麻烦,因为在运行时使用.value可能会导致错误。然而,有一个简单的解决方法,即使用unref()而不是.value。 unref()会检查变量是否是引用,并自…...
Java:JDK、JRE和JVM 三者关系
文章目录 一、JDK是什么二、JRE是什么三、JDK、JRE和JVM的关系 一、JDK是什么 JDK(Java Development Kit):Java开发工具包 JRE:Java运行时环境开发工具:javac(编译工具)、java(运行…...
Radio专业术语笔记
在收音机的 RDS (Radio Data System) 功能中,CT 代表 “Clock Time”。RDS 是一种数字广播标准,用于在调频广播中传输辅助数据,如电台名称、节目类型、交通信息等。CT 功能是其中的一部分,用于同步和显示广播电台发送的当前时间。…...
cocosCreator找出未用到的图片
最近整理项目的时候发现有些资源文件夹有点轮乱(一些历史原因导致的),而且有很多图片都是没用了的,但是没有被删除掉,还一直放在项目中,导致项目的资源文件夹比较大,而且还冗余。于是今天想着整理一下。 公开免费链接 找出未使用的图片 有好几种方法可以找出未使用的图片…...
一览 Anoma 上的有趣应用概念
撰文:Tia,Techub News 本文来源香港Web3媒体:Techub News Anoma 的目标是为应用提供通用的意图机器接口,这意味着使用 Anoma,开发人员可以根据意图和分布式意图机编写应用,而不是根据事务和特定状态机进行…...
Spring Boot集成fastjson2快速入门Demo
1.什么是fastjson2? fastjson2是阿里巴巴开发的一个高性能的Java JSON处理库,它支持将Java对象转换成JSON格式,同时也支持将JSON字符串解析成Java对象。本文将介绍fastjson2的常见用法,包括JSON对象、JSON数组的创建、取值、遍历…...
Three.js机器人与星系动态场景(二):强化三维空间认识
在上篇博客中介绍了如何快速利用react搭建three.js平台,并实现3D模型的可视化。本文将在上一篇的基础上强化坐标系的概念。引入AxesHelper辅助工具及文本绘制工具,带你快速理解camer、坐标系、position、可视区域。 Three.js机器人与星系动态场景&#x…...
java顺序查找
其中有一个常用的编程思想: 由于是遍历查找,不能用if-else来输出没有找到,而应该设置一个索引index,如果找到就将index的值设置成下标的值,如果遍历结束后index仍为初始值,才是没有找到 //2024.07.03impor…...
提升学生职务执行力的智慧校园学工管理策略
智慧校园的学工管理系统匠心独运地融入了“学生职务”这一创新模块,它紧密贴合学生的实际需求,致力于在校期间的实践经验积累和个人能力的全面提升。这个模块化身为一个便捷的综合平台,让学生们能够轻松发掘并参与到丰富多彩的校内职务中去&a…...
系统运维面试总结(shell编程)
SYNDDOS攻击,需要判断这个访问是正常访问还是信包攻击,当前这个信包发起的访问数量是多少,例如看到30个信包同时再访问时设置监控报警。 一般选用/dev/urandom生成,但其生成的随机数带有二进制乱码,所以需要tr命令…...
在数据库中,什么是主码、候选码、主属性、非主属性?
在数据库中,主码、候选码、主属性和非主属性是几个重要的概念,它们对于理解数据库的结构和数据的完整性至关重要。以下是对这些概念的详细解释: 一、主码(Primary Key) 定义:主码,也被称为主键…...
Linux-笔记 udev机制介绍
目录 前言 概念 规则文件 规则文件的命名 规则文件的语法 匹配条件 赋值指令 例子 前言 由于之前利用udev机制实现了一个自动配置某功能的项目,所以这里做一下笔记总结,什么是udev?怎么用? 概念 udev其实是linux系统中一…...
深度学习基准模型Mamba
深度学习基准模型Mamba Mamba(英文直译:眼镜蛇)具有选择性状态空间的线性时间序列建模,是一种先进的状态空间模型 (SSM),专为高效处理复杂的数据密集型序列而设计。 Mamba是一种深度学习基准模型,专为处理长序列数据而设计&…...
面试专区|【40道移动端测试高频题整理(附答案背诵版)】
iOS应用和Android应用测试有什么侧重点? iOS应用和Android应用测试的侧重点略有不同,主要表现在以下几个方面: 分辨率和屏幕尺寸:Android设备的分辨率和屏幕尺寸多种多样,因此,需要测试更多的分辨率和屏幕…...
vb6多线程异步,VB.NET 全用API实现:CreateThread创建多线程,等待线程完成任务
在VB.NET中,你可以使用API函数来创建多线程并等待线程完成任务。以下是一个示例代码,展示如何使用API函数来实现这个功能: Imports System.Runtime.InteropServices Imports System.ThreadingPublic Class Form1Private Delegate Sub ThreadC…...
Python中计算一个序列中特点值出现的数量,比如 [0,0,0,1,1,0,0,]中1的数量
要计算列表 [0, 0, 0, 1, 1, 0, 0] 中 1 的数量,可以使用 Python 中的 count 方法。这是一个简洁而有效的方法。下面是示例代码: # 定义列表 lst [0, 0, 0, 1, 1, 0, 0]# 计算列表中1的数量 num_ones lst.count(1)# 输出结果 print("Number of 1…...
gitignore
.gitignore 是一个在 Git 版本控制系统中使用的文件,它用于指定在 Git 仓库中哪些文件或目录应该被忽略,即不会被 Git 追踪或记录。这对于一些自动生成的、用户特定的或敏感的文件特别有用,比如编译后的目标文件、日志文件、配置文件中的密码…...
Adobe Premiere 视频编辑软件下载安装,pr全系列分享 轻松编辑视频
Adobe Premiere,自其诞生之日起,便以其卓越的性能和出色的表现,稳坐视频编辑领域的王者宝座,赢得了无数专业编辑人员与广大爱好者的青睐。这款强大的视频编辑软件,凭借其丰富的功能和灵活的操作性,为用户提…...
大屏开发系列——Echarts的基础使用
本文为个人近期学习总结,若有错误之处,欢迎指出! Echarts在vue2中的基础使用 一、简单介绍二、基本使用(vue2中)1.npm安装2.main.js引入3.使用步骤(1)准备带有宽高的DOM容器;(2)初始化echarts实例ÿ…...
指挥中心操作台的形状及空间布局
在现代化的指挥中心,操作台的形状设计至关重要,它不仅影响着操作人员的工作效率和舒适度,还关系到整个指挥系统的运行效果。常见的指挥中心操作台形状多种多样,以满足不同的功能需求和空间布局。 直线型操作台 直线型操作台是最为…...
Linux源码阅读笔记07-进程管理4大常用API函数
find_get_pid find_get_pid(...)函数功能:根据进程编号获取对应的进程描述符,具体Linux内核源码对应函数设计如下: 获取进程描述符,且描述符的count1,表示进程多一个用户 pid_task pid_task(...)函数功能࿱…...
后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok
一、什么是JDBC JDBC就是sun公司研发的一套通过java来操控数据库的工具,对应不同的数据库系统有不同的JDBC,而他们统称【驱动】,这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。 JDBC有自己一套原始…...
零基础入门怎么学习老挝语字母表?《老挝语翻译通》App真人发音教学,学习老挝语字母发音和词汇句子!
这段老挝文字翻译成中文是什么意思?有什么好用的老挝语翻译工具推荐吗? 快速翻译:中老语言无缝转换,实时翻译,让沟通更流畅。 学习工具:零基础入门到流利对话,老挝语真人发音,让你的…...
linux深度deepin基于rsync和apt-mirror同步软件源及构建本地内网源
目录 一、rsync方式二、apt-mirror方式1.安装apt-mirror2.配置apt-mirror(/etc/apt/mirror.list)3.新建存放目录开始下载 3.发布mirror站点 一、rsync方式 参考官方文档地址: https://www.deepin.org/index/docs/wiki/05_HOW-TO/08_%E9%95%9C%E5%83%8F%E5%8A%A0%E9%…...
场景管理分析平台介绍
在数字化浪潮的推动下,数据已成为企业决策的重要依据。特别是在智能驾驶、虚拟现实和物联网等领域,场景数据的高效管理和利用至关重要。在智能驾驶领域面对海量的场景数据,如何高效处理、精准分析,并将其转化为有价值的决策支持&a…...
SQL Server和Oracle数据库的实时同步
数据同步在大数据应用中扮演着关键角色,它确保了数据的实时性和一致性,为数据分析和决策提供了重要支持。常见的数据同步方式包括ETL实时同步和实时ETL工具,后者可以基于日志追踪或触发器进行分类。不同的数据库系统针对实时同步也有各自的实…...
Python中使用Oracle向量数据库实现文本检索系统
Python中使用Oracle向量数据库实现文本检索系统 代码分析 在本文中,我们将深入分析一个使用Oracle向量数据库实现文本检索系统的Python代码,并基于相同的技术生成一个新的示例。这个系统允许我们存储文档及其嵌入向量,并执行相似性搜索。 代码分析 让我们逐步分析原始代码的主…...
java考试题20道
选择题 编译Java源代码文件的命令是javac javac命令是将Java源代码文件进行编译得到字节码文件(.class文件) java命令是在JVM上运行得到的字节码文件 下面是一个示例: javac test.java -------> test.class java test ------> 运行test.class文件下列那…...
云仓的优势体现在哪里?
云仓,即云仓储,是一种基于互联网和大数据技术的新型仓储管理模式。它通过高度的信息化、自动化和集成化管理模式,为企业提供高效、灵活、智能的仓储解决方案。云仓的优势主要体现在以下几个方面: ———————————————…...
github 设置中文,亲测有效
点进去 安装 选上面第二个,不行再选第一个 GitHub - maboloshi/github-chinese: GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese)...
Spring容器生命周期中如前置运行程序和后置运行程序
在Spring容器加入一个实现了BeanPostProcessor接口bean实例,重写postProcessBeforeInitialization、postProcessAfterInitialization方法,在方法里面写具体的实现,从而达到Spring容器在初如化前或销毁时执行预定的程序,方法如下&a…...
C++ 现代教程二
线程支持库 - C中文 - API参考文档 GitHub - microsoft/GSL: Guidelines Support Library Fluent C:奇异递归模板模式(CRTP) - 简书 #include <thread> #include <iostream> #include <unordered_map> #include <futu…...
JavaScript函数闭包解析
一、什么是闭包 JavaScript中的函数闭包是指函数可以访问其父级作用域中的变量,即使函数在父级作用域外被调用。闭包可以获取和修改其父级作用域中的变量,即使父级作用域已经被销毁。 在JavaScript中,当一个函数被定义时,它会创…...
STM32MP135裸机编程:使用软件触发硬件复位
0 参考资料 STM32MP13xx参考手册.pdf 1 使用寄存器实现软件复位 1.1 复位电路概述 重点关注下面标红的路线: 通过这条路线可以清楚看到,我们可以通过设置RCC_MP_GRSTCSETR寄存器让RPCTL(复位脉冲控制器)给NRST(硬件复…...
【饼图交通方式】用ECharts的graphic配置打造个性化
利用ECharts的graphic配置打造个性化图表 内容概要 ECharts是一款强大的数据可视化工具,它提供了丰富的配置选项来定制图表。本文将重点介绍graphic配置的使用,展示如何通过在饼图中添加个性化的图形元素,例如中心图像,来增强图…...
大模型学习笔记3【大模型】LLaMA学习笔记
文章目录 学习内容LLaMALLaMA模型结构LLaMA下载和使用好用的开源项目[Chinese-Alpaca](https://github.com/ymcui/Chinese-LLaMA-Alpaca)Chinese-Alpaca使用量化评估 学习内容 完整学习LLaMA LLaMA 2023年2月,由FaceBook公开了LLaMA,包含7B࿰…...
工程师 - 什么是SMP
什么是 SMP(对称多处理)? What is SMP (symmetric multiprocessing)? 对称多处理(SMP,symmetric multiprocessing)是由多个处理器完成的计算机处理过程,这些处理器共享一个操作系统࿰…...
独孤思维:副业被骂煞笔,割韭菜
做副业不要被外界干扰,不要被情绪牵绊。 不要因为别人的无心谩骂,随口一评,就偃旗息鼓。 不要因为自己的情绪需要,找存在感,寻求人安慰。 他强任他强,清风拂山岗。 他横由他横,明月照大江。…...
verilog实现PID控制
1 原理讲解 距离上一次说PID算法的事情过去蛮久了,今天又重新看了看PID的代码,其实还是存在一些不合理的地方。 整理归纳了一下原理,位置式和增量式的变化。 2 工程实现 timescale 1ns / 1psmodule pid_controller(input clk,input r…...
数据结构初阶 遍历二叉树问题(一)
一. 链式二叉树的实现 1. 结构体代码 typedef int BTDateType; typedef struct BinaryTreeNode {BTDateType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right; }BTNode; 大概的图形是这样子 2. 增删查改 我们这里要明确的一点的 二叉树的增删查改是没有意…...
STL--求交集,并集,差集(set_intersection,set_union,set_difference)
set_intersection(重要) 求两个有序的序列的交集. 函数声明如下: template<class InputIterator1, class InputIterator2, class OutputIterator>OutputIterator set_intersection(InputIterator1 _First1, //容器1开头InputIterator1 _Last1, //容器2结尾(不包含)Inp…...
Python中使用Oracle向量数据库实现文本检索系统
Python中使用Oracle向量数据库实现文本检索系统 代码分析 在本文中,我们将深入分析一个使用Oracle向量数据库实现文本检索系统的Python代码,并基于相同的技术生成一个新的示例。这个系统允许我们存储文档及其嵌入向量,并执行相似性搜索。 代码分析 让我们逐步分析原始代码的主…...
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
章节内容 上一节完成: HDFS的简介内容HDFS基础原理HDFS读文件流程HDFS写文件流程 背景介绍 这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次,但是没留下…...
方程豹豹3谍照信息曝光售价或低于20万元
日前,电车之家获悉到一组方程豹豹3的谍照信息。该车定位紧凑型SUV,预计会在年内上市,售价方面或低于20万元。新车还处于高度保密期,所以车身有着较多的伪装材料。目前只能看到新车配备了平行式日间行车灯,是否贯穿式,目前还不能确定。另外在路试车的车顶我们也没有看到激…...
浪漫午后夏日茶歇
初夏的午后,来一份精致诱人的下午茶,在美味的甜点和优美的乐曲中感受此刻的幸福……昨天下午,在松江区文诚幼儿园开展了一场以“夏日么么茶”为主题的自助下午茶趣味活动,100余名大班小朋友参加。现场老师和孩子们一起精心布置了温馨的环境,随后,在动感的走秀音乐中,孩子…...
0基础认识C语言(理论+实操 2)
小伙伴们大家好,今天也要撸起袖子加油干!万事开头难,越学到后面越轻松~ 话不多说,开始正题~ 前提回顾: 接上次博客,我们学到了转义字符,最后留下两个转义字符不知道大家有没有动手尝试了一遍&a…...
dockerfile关键字
参考:59_Dockerfile保留字简介_哔哩哔哩_bilibili FROM 作用:指定基础镜像,即在这个基础镜像上构建新镜像,如下所示,表示在ubuntu20.04镜像的基础上构建新镜像 FROM ubuntu:20.04 MAINTAINER 作用:镜像…...
DiffBIR论文阅读笔记
这篇是董超老师通讯作者的一篇盲图像修复的论文,目前好像没看到发表在哪个会议期刊,应该是还在投,这个是arxiv版本,代码倒是开源了。本文所指的BIR并不是一个single模型对任何未知图像degradation都能处理,而是用同一个…...
Java基础:异常(三)
Java基础:异常(三) 文章目录 Java基础:异常(三)1. Java异常体系1.1 错误的分类1.2 异常的分类 2. 异常的捕获与处理2.1 try-catch2.2 finally 3. 异常的抛出4. 自定义异常 1. Java异常体系 Java的异常体系是…...