机器学习-深度神经网络架构

深度网络微调

  • 深度学习(DL)是一门用于从数据中提取信息的编程语言
    1、一些值会在之后被数据填充
    2、可微
  • 很多设计模式,从层到网络结构

Batch Normalization(批量归一化,BN)

  • 标准化数据使线性方法的损失函数更平滑
    1、平滑:∣∣▽f(x)−▽f(y)∣∣2≤β∣∣x−y∣∣2||\triangledown f(x)-\triangledown f(y)||^2\le\beta||x-y||^2∣∣▽f(x)−▽f(y)∣∣2≤β∣∣x−y∣∣2,梯度的大小小于x与y之间距离的β\betaβ倍
    2、小的β\betaβ值允许一个更大的学习率
    3、不会帮助深度神经网络
  • 批量归一化(BN)把中间内部层的输入也进行标准化

步骤

  • 变形reshape
    把输入X变成一个2D的矩阵(若不是2D的)
    X∈Rn∗c∗w∗h→X′∈Rnwh∗cX\isin\reals^{n*c*w*h}\to X'\isin\reals^{nwh*c}X∈Rn∗c∗w∗h→X′∈Rnwh∗c(batch n,channel c,width w,height h)
  • 标准化Normalization
    把每一列标准化
    xˆj′←(xj′−mean(xj′))/std(xj′)\^{x}^{'}_j\gets(x^{'}_j-mean(x^{'}_j))/std(x^{'}_j)xˆj′←(xj′−mean(xj′))/std(xj′)
  • recovery
    有Y′Y'Y′,其中yj′=γjxˆj+βjy^{'}_j=\gamma_j\^x_j+\beta_jyj′=γjxˆj+βj作为第j列,γj和βj\gamma_j和\beta_jγj和βj是可学习的参数
  • 输出YYY,通过reshapeY′Y'Y′将其还原回之前的格式

代码

python 复制代码
def batch_norm(X,gamma,beta,moving_mean,moving_var,eps,momentum):
	if not torch.is_grad_enabled():
		X_hat = (X-moving_mean)/torch.sqrt(moving_var+eps)
	else:
		assert len(X.shape) in (2,4)
		if len(X.shape)==2:
			mean = X.mean(dim=0)
			var = ((X-mean)**2).mean(dim=0)
		else:
			mean = X.mean(dim=(0,2,3),keepdim=True)
			var = ((X-mean)**2).mean(dim=(0,2,3),keepdim=True)
		X_hat = (X-mean)/torch.sqrt(var+eps)
		moving_mean = momentum*moving_mean + (1.0-momentum)*mean
		moving_var = momentum*moving_var + (1.0-momentum)*var
	Y = gamma*X_hat + beta
	return Y,moving_mean,moving_var

Layer Normalization(层归一化)

  • 若应用于RNN,BN在每个时间步需要维持离散的移动数据(在每个时间步学习的那些参数不要共享)
    在推理时处理很长的数据时是有问题的
  • 层归一化reshape输入X∈Rn∗p→X′∈Rp∗nX\isin\reals^{n*p}\to X'\isin\reals^{p*n}X∈Rn∗p→X′∈Rp∗n,X∈Rn∗c∗w∗h→ X′∈Rcwh∗nX\isin\reals^{n*c*w*h}\to\ X'\isin\reals^{cwh*n}X∈Rn∗c∗w∗h→ X′∈Rcwh∗n,其他的与BN相同
    1、在每个样例中归一化,直到目前的时间步
    2、在训练和推理时是一致的
    3、多在Transformers中应用
相关推荐
@小匠1 小时前
Read Frog:一款开源的 AI 驱动浏览器语言学习扩展
人工智能·学习
山间小僧2 小时前
「AI学习笔记」RNN
机器学习·aigc·ai编程
网教盟人才服务平台4 小时前
“方班预备班盾立方人才培养计划”正式启动!
大数据·人工智能
芯智工坊4 小时前
第15章 Mosquitto生产环境部署实践
人工智能·mqtt·开源
菜菜艾4 小时前
基于llama.cpp部署私有大模型
linux·运维·服务器·人工智能·ai·云计算·ai编程
TDengine (老段)4 小时前
TDengine IDMP 可视化 —— 分享
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据·时序数据
小真zzz4 小时前
搜极星:第三方多平台中立GEO洞察专家全面解析
人工智能·搜索引擎·seo·geo·中立·第三方平台
GreenTea5 小时前
从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码
前端·人工智能·后端
火山引擎开发者社区5 小时前
秒级创建实例,火山引擎 Milvus Serverless 让 AI Agent 开发更快更省
人工智能