关于归一化

本文介绍了机器学习中常用的归一化方法,包括除以最大值、除以区间和使用sigmoid函数等,并探讨了这些方法在不同场景下的应用,如按用户和按关注点进行归一化的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       归一化在机器学习中经常避不过的一环。

1、归一化方法:单纯数学层面的归一化(一般是0~1.0, 或者0~100, ):

       1)除于最大:score = x/ max

        2) 除间隔: score = x-min/ (max-min)

        3)利用指数性质: score(x) = sigmoid(x), 或者其他类似的函数。

        归一化到同一尺度便于分数表示, 以及在机器学习输入时一致,便于迭代优化。

2、应用场景:为了展示区分度:

       这个本质上和1是一样的,但操作上略有不同,它不要求有最大值。

        

用户\关注点关注点1关注点2
用户A3次4次
用户B1次 8次

这里有按用户的归一化,以及按关注点的归一化(行归一,按用户归一; 列归一, 按关注点归一)

         行归一的话: 可以描述用户在关注点1 和关注点2之间差别。 直接比较关注点1、2之间的频次差距,频次多的则高。 

         列归一的话: 按照列归一的方法,如果本身关注就不多,比如关住点1,如果按行归一是比较吃亏的,其实用户A是对关注点1很感兴趣的相比其他用户,但是呢按用户内部的话比关注点2要低很多,实际上关注点2可能是影视音乐一样大家都有的,而且高频的,实际上分数不应该这么高。

         当然按列归一一个问题是: 当一个用户在某个关注点有一定增长的趋势(比如最近刚访问了2次),这中热情度不能玲离尽致的体现。



### 大模型中的归一化常见面试问题及答案 #### 层归一化(Layer Normalization)的作用是什么? 层归一化是一种用于稳定和加速神经网络训练的技术。其主要作用是在每一层的激活函数之前对数据进行标准化处理,从而减少内部协变量偏移现象。这有助于提高梯度传播效率并加快收敛速度[^1]。 ```python import torch.nn as nn class Model(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(Model, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.ln = nn.LayerNorm(hidden_size) # Layer normalization layer def forward(self, x): out = self.fc1(x) out = self.ln(out) # Apply layer normalization before activation function return out ``` #### 批量归一化(Batch Normalization)与层归一化有何不同? 批量归一化是对整个批次的数据进行统计计算均值和方差来进行规范化操作;而层归一则只关注单一样本,在该样本特征维度上做同样的事情。因此BN依赖于batch size大小以及mini-batch内样本分布情况,LN则不受此影响更适用于RNN/LSTM等序列建模任务中[^2]。 #### 在大规模预训练语言模型里为什么倾向于采用层归一化而不是批量归一化? 由于大模型通常具有非常深的架构并且可能涉及长程依赖关系捕捉的任务特性,所以更加推荐使用层归一化来替代传统的批处理方式。因为前者能够更好地保持每一步骤间的一致性和稳定性,这对于防止梯度消失/爆炸至关重要。此外,随着Transformer类结构成为主流,自注意力机制使得各位置之间相互关联紧密,此时再利用基于batch统计数据的方法反而可能导致性能下降甚至不稳定的结果出现[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值