数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
五、Optimization
optimization
模块提供如下功能:- 一个具有固定权重衰减的
optimizer
,可用于对模型进行微调。 - 几个
schedule
,它们是以继承自_LRSchedule
的schedule
对象的形式提供。 - 一个
gradient accumulation
类,用于累积多个batch
的梯度。
- 一个具有固定权重衰减的
5.1 Optimizer API
class transformers.AdamW
:具有固定的weight decay
的Adam
。xxxxxxxxxx
class transformers.AdamW( params: typing.Iterable[torch.nn.parameter.Parameter], lr: float = 0.001, betas: typing.Tuple[float, float] = (0.9, 0.999), eps: float = 1e-06, weight_decay: float = 0.0, correct_bias: bool = True, no_deprecation_warning: bool = False )参数:
params
:一个nn.parameter.Parameter
可迭代对象或字典,指定需要被优化的parameters
或parameter groups
。lr
:一个浮点数,指定初始学习率。betas
:一个Tuple[float,float]
元组,指定Adam
的参数 $ (\beta_1,\beta_2) $ 。eps
:一个浮点数,用于数值稳定。weight_decay
:一个浮点数,指定权重衰减。correct_bias
:一个布尔值,指定是否在Adam
中correct bias
。例如,在BERT TF repo
中,他们使用False
。no_deprecation_warning
:一个布尔值,指定是否屏蔽deprecation warning
。
方法:
step( closure: typing.Callable = None)
:指定单个optimization step
。参数:
closure
:一个可调用对象,用于重新评估模型并返回loss
。
class transformers.Adafactor(PyTorch)
:Adafactor
优化器。xxxxxxxxxx
class transformers.Adafactor( paramslr = None, eps = (1e-30, 0.001), clip_threshold = 1.0, decay_rate = -0.8, beta1 = None, weight_decay = 0.0, scale_parameter = True, relative_step = True, warmup_init = False )参数:
params
:参考AdamW
。lr
:external
的学习率。eps
:一个Tuple[float, float]
元组,指定正则化系数,分别用于square gradient
和parameter scale
。clip_threshold
:一个浮点数,指定final gradient update
的均方根阈值。decay_rate
:一个浮点数,指定用于计算running averages of square
的系数。beta1
:一个浮点数,指定用于计算running averages of gradient
的系数。weight_decay
:一个浮点数,指定权重衰减(L2
正则化)。scale_parameter
:一个布尔值,如果为True
,则学习率通过root mean square
来缩放。relative_step
:一个布尔值,如果为True
,则计算time-dependent
学习率而不是external
学习率。warmup_init
:一个布尔值,指定time-dependent
学习率是否启用warm-up
初始化。
方法:参考
AdamW
。class transformers.AdamWeightDecay(TensorFlow)
:在梯度上启用了L2
权重衰减和clip_by_global_norm
的Adam
。xxxxxxxxxx
class transformers.AdamWeightDecay( learning_rate: typing.Union[float, keras.optimizers.schedules.learning_rate_schedule.LearningRateSchedule] = 0.001, beta_1: float = 0.9, beta_2: float = 0.999, epsilon: float = 1e-07, amsgrad: bool = False, weight_decay_rate: float = 0.0, include_in_weight_decay: typing.Optional[typing.List[str]] = None, exclude_from_weight_decay: typing.Optional[typing.List[str]] = None, name: str = 'AdamWeightDecay', **kwargs )参数:
learning_rate
:一个浮点数或tf.keras.optimizers.schedules.LearningRateSchedule
,指定学习率或学习率调度。beta_1
:一个浮点数,指定Adam
的 $ \beta_1 $ 参数。beta_2
:一个浮点数,指定Adam
的 $ \beta_2 $ 参数。epsilon
:一个浮点数,是Adam
中的 $ \epsilon $ 参数,用于数值稳定性。amsgrad
:一个布尔值,指定是否应该使用算法的AMSGrad
变体。weight_decay_rate
:一个浮点数,指定权重衰减的系数。include_in_weight_decay
:一个关于字符串的列表,指定对哪些parameters
应用权重衰减。如果未传递该参数,则默认应用于所有的parameters
(除非它们位于exclude_from_weight_decay
中)。exclude_from_weight_decay
:一个关于字符串的列表,指定对哪些parameters
排除权重衰减。如果一个parameter name
同时位于include_in_weight_decay
和exclude_from_weight_decay
,那么以include_in_weight_decay
优先级最高。name
:一个字符串,指定权重衰减操作的名称。kwargs
:关键字操作,可以为clipnorm, clipvalue, lr, decay
:clipnorm
:基于梯度范数来裁剪梯度。clipvalue
:基于梯度的取值来裁剪梯度。decay
:用于后向兼容性,从而允许学习率的时间逆向衰减time inverse decay
。lr
:用于后向兼容性,建议使用learning_rate
。
方法:
from_config(config)
:从配置文件中创建一个AdamWeightDecay
。
transformers.create_optimizer()
:创建一个optimizer
。xxxxxxxxxx
transformers.create_optimizer( init_lr: float, num_train_steps: int, num_warmup_steps: int, min_lr_ratio: float = 0.0, adam_beta1: float = 0.9, adam_beta2: float = 0.999, adam_epsilon: float = 1e-08, adam_clipnorm: typing.Optional[float] = None, adam_global_clipnorm: typing.Optional[float] = None, weight_decay_rate: float = 0.0, power: float = 1.0, include_in_weight_decay: typing.Optional[typing.List[str]] = None )参数:
init_lr
:一个浮点数,指定warmup
阶段结束时的期望学习率。num_train_steps
:一个整数,指定总的训练step
数。num_warmup_steps
:一个整数,指定warmup step
数。min_lr_ratio
:一个浮点数,学习率线性衰减结束时的最终学习率为init_lr * min_lr_ratio
。adam_beta1
:一个浮点数,指定Adam
的 $ \beta_1 $ 参数。adam_beta2
:一个浮点数,指定Adam
的 $ \beta_2 $ 参数。adam_epsilon
:一个浮点数,指定Adam
中的 $ \epsilon $ 参数,用于数值稳定性。adam_clipnorm
:一个浮点数,如果不是None
,指定每个权重梯度范数的裁剪值。adam_global_clipnorm
:一个浮点数,如果不是None
,把所有权重梯度拼接起来,然后这个拼接结果的范数的裁剪值。weight_decay_rate
:一个浮点数,指定权重衰减系数。power
:一个浮点数,指定多项式衰减的幂次。include_in_weight_decay
:参考AdamWeightDecay
。
5.2 Schedule API
class transformers.SchedulerType
:一个枚举类型。xxxxxxxxxx
class transformers.SchedulerType( value, names = None, module = None, qualname = None, type = None, start = 1 )transformers.get_scheduler()
:一个统一的API
,根据scheduler name
来获取scheduler
。xxxxxxxxxx
transformers.get_scheduler( name: typing.Union[str, transformers.trainer_utils.SchedulerType], optimizer: Optimizer, num_warmup_steps: typing.Optional[int] = None, num_training_steps: typing.Optional[int] = None )参数:
name
:一个字符串或SchedulerType
,指定scheduler
的名字。optimizer
:一个torch.optim.Optimizer
对象,指定优化器。num_warmup_steps
:一个整数,指定需要的warmup step
的数量。不是所有的scheduler
都需要这个参数(因此这个参数是可选的)。如果这个参数没有设置,而scheduler
需要这个参数,则将引发一个错误。num_training_steps
:一个整数,指定需要的training step
的数量。不是所有的scheduler
都需要这个参数(因此这个参数是可选的)。如果这个参数没有设置,而scheduler
需要这个参数,则将引发一个错误。
transformers.get_constant_schedule( optimizer: Optimizer, last_epoch: int = -1)
:创建一个常数学习率的调度器。参数:
optimizer
:一个torch.optim.Optimizer
对象,指定优化器。last_epoch
:一个整数,指定last epoch
的索引,用于恢复训练。
transformers.get_constant_schedule_with_warmup(optimizer: Optimizer, num_warmup_steps: int, last_epoch: int = -1)
:创建一个带warmup
的常数学习率的调度器。参数:
num_warmup_steps
:一个整数,指定warmup
阶段的step
数。- 其它参数参考
get_constant_schedule()
。
transformers.get_cosine_schedule_with_warmup(optimizer: Optimizer, num_warmup_steps: int, num_training_steps: int, num_cycles: float = 0.5, last_epoch: int = -1)
:创建一个带warmup
的余弦学习率的调度器。参数:
num_training_steps
:一个整数,指定总的训练step
数。num_cycles
:一个浮点数,指定余弦调度中的波数,默认为0.5
,表示半个余弦(从最大值下降到零)。- 其它参数参考
get_constant_schedule_with_warmup()
。
transformers.get_cosine_with_hard_restarts_schedule_with_warmup(optimizer: Optimizer, num_warmup_steps: int, num_training_steps: int, num_cycles: float = 0.5, last_epoch: int = -1)
:创建一个带warmup
的、且若干个硬重启的余弦学习率的调度器参数:
num_cycles
:一个整数,指定hard restart
的数量。- 其它参数参考
get_cosine_schedule_with_warmup()
。
transformers.get_linear_schedule_with_warmup( optimizer, num_warmup_steps, num_training_steps, last_epoch = -1)
:创建一个带warmup
的线性调度器。参数:参考
get_constant_schedule_with_warmup()
。transformers.get_polynomial_decay_schedule_with_warmup(optimizer, num_warmup_steps, num_training_steps, lr_end = 1e-07, power = 1.0, last_epoch = -1)
:创建一个带warmup
的多项式衰减调度器。参数:
lr_end
:一个浮点数,制定结束时的学习率。power
:一个浮点数,指定指数因子。- 其它参数参考
get_constant_schedule_with_warmup()
。
class transformers.WarmUp(TensorFlow)
:在一个给定的learning rate decay schedule
上应用一个warmup
。xxxxxxxxxx
class transformers.WarmUp( initial_learning_rate: float, decay_schedule_fn: typing.Callable, warmup_steps: int, power: float = 1.0, name: str = None )参数:
initial_learning_rate
:一个浮点数,指定warmup
结束时的学习率。decay_schedule_fn
:一个可调用对象,指定在warmup
之后所采用的schedule
函数。warmup_steps
:一个整数,指定warmup
阶段的step
数。power
:一个浮点数,指定用于多项式warmup
的指数因子(默认为线性warmup
)。name
:一个字符串,指定在schedule
阶段返回的张量的name prefix
。
5.3 Gradient Strategies API
class transformers.GradientAccumulator(TensorFlow)
:gradient accumulation
工具函数。当用于分布式训练时,应在副本上下文中调用该
accumulator
。梯度将在每个副本上局部地累积,不需要同步。然后用户应该调用.gradients
,如果需要的话则scale
梯度,并将结果传递给apply_gradients
。方法:
reset()
:在当前replica
上reset
被累计的梯度。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论