java基本数据类型

1)四种整数类型(byte、short、int、long):    byte:8 位,用于表示最小数据单位,如文件中数据,-128~127    short:16 位,很少用,-32768 ~ 32767    int:32 位、最常用,-2^31-1~2^31  (21 亿)    long:64 位、次常用    注意事项:    int i=5; // 5 叫直接量(或字面量),即 直接写出的常数。    整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。    小于 32 位数的变量,都按 int 结果计算。    强转符比数学运算符优先级高。见常量与变量中的例子。

 

2)两种浮点数类型(float、double):    float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。    double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾    注意事项:    二 进 制 浮 点 数 : 1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方)    尾数:  . 1010100010   指数:1010   基数:2    浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X    float  的精度没有 long 高,有效位数(尾数)短。    float  的范围大于 long  指数可以很大。    浮点数是不精确的,不能对浮点数进行精确比较。

 

3)一种字符类型(char):    char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。    注意事项:    不能为 0个字符。    转义字符:\n  换行  \r  回车  \t Tab 字符  \" 双引号  \\ 表示一个\    两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。

 

4)一种布尔类型(boolean):true 真  和 false 假。

 

5)自动类型转换:       char-->    自动转换:byte-->short(char)-->int-->long-->float-->double                   强制转换:①会损失精度,产生误差,小数点以后的数字全部舍弃。②容易超过取值范围。

 

6)记忆:8位:Byte(字节型)          16位:short(短整型)、char(字符型)          32位:int(整型)、float(单精度型/浮点型)          64位:long(长整型)、double(双精度型)          最后一个:boolean(布尔类型)

### PPODPOGRPO 算法的区别与联系 #### Proximal Policy Optimization (PPO) Proximal Policy Optimization 是一种强化学习方法,旨在通过引入信任区域来稳定策略更新过程。该算法利用剪切函数限制新旧策略之间的差异,从而防止参数更新过大导致性能下降。PPO 结合了 TRPO 的稳定性以及简单易实现的特点,在实践中表现出良好的收敛速度和鲁棒性[^1]。 ```python def ppo_update(policy_net, old_policy_net, optimizer, states, actions, rewards): advantages = compute_advantages(states, rewards) for _ in range(update_epochs): new_log_probs = policy_net.log_prob(actions) old_log_probs = old_policy_net.log_prob(actions).detach() ratio = torch.exp(new_log_probs - old_log_probs) surr1 = ratio * advantages surr2 = torch.clamp(ratio, 1.0 - clip_param, 1.0 + clip_param) * advantages loss = -torch.min(surr1, surr2).mean() optimizer.zero_grad() loss.backward() optimizer.step() ``` #### Direct Preference Optimization (DPO) Direct Preference Optimization 则是从人类反馈中直接优化模型的行为分布,而不需要显式的奖励信号。这种方法能够更高效地利用少量高质量的人类评价数据,并且可以避免传统基于奖励塑造的方法所带来的偏差问题。DPO 使用对比损失函数训练模型以最大化所选行为序列相对于未选行为的概率比值。 ```python def dpo_loss(selected_seq_logits, unselected_seq_logits): logits_diff = selected_seq_logits - unselected_seq_logits losses = F.softplus(-logits_diff) return losses.mean() for epoch in range(num_epochs): for batch in data_loader: selected_seq_logits, unselected_seq_logits = model(batch) loss = dpo_loss(selected_seq_logits, unselected_seq_logits) optimizer.zero_grad() loss.backward() optimizer.step() ``` #### Gradient Ratio Policy Optimization (GRPO) Gradient Ratio Policy Optimization 提出了调整正负梯度系数的概念,实验结果显示这能显著提升在线环境下的表现。特别是当采用细粒度步长感知型梯度比率时(即 GRPO+PS),其效果要好于仅考虑整体比例的情况(如 GRPO+OS)。这种机制允许更加灵活地控制不同阶段的学习速率变化趋势,有助于提高最终决策质量[^2]。 ```python class GRPOTrainer: def __init__(self, ...): self.positive_coefficient = ... self.negative_coefficient = ... def update(self, positive_gradients, negative_gradients): adjusted_positive_grads = positive_gradients * self.positive_coefficient adjusted_negative_grads = negative_gradients * self.negative_coefficient final_gradients = adjusted_positive_grads - adjusted_negative_grads apply_gradients(final_gradients) ``` 综上所述,虽然三种算法都属于强化学习领域内的改进方案,但各自侧重点有所不同:PPO 关注如何平稳有效地完成单次迭代;DPO 注重从有限数量的偏好样本里提取有用信息来进行指导;GRPO 则探索了动态调节梯度权重对于加速收敛的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值