是一个平台,上面有各种模型,特别是transformers,里面提供了很多state-of-art的预训练模型。
2 pytorch是什么“Transformers是一个用于自然语言处理(NLP)的Python第三方库,实现Bert、GPT-2和XLNET等比较新的模型,支持TensorFlow和PyTorch。”
PyTorch 是一个基于 Python 的科学计算包,主要定位两类人群:NumPy 的替代品,可以利用 GPU 的性能进行计算。
3 Bert fine-tunebert有很多预训练好了的模型,比如谷歌、科大讯飞、百度等等,用大量数据预训练好后开源,可以直接用他们预训练好的模型做自己的下游任务。
【训练过程】:修改我们自己的输入,然后得到输出,计算loss反传优化参数。
参数一开始都是随机初始化的,这样就很慢很慢,所以使用预训练模型微调,这样训练几个epoch效果就可以很不错了,并且收敛的效果很好。
可以理解为一次输入的数据量,例如:
batch size = 1,也就是输入一条数据,得到一个loss然后反传,但这样读取速度很慢,相当于是串行的,并且随机性很大,模型很难稳定收敛。
但batch size也不能太大,太大会导致反传时“步子”太大,很难优化到最优
因此要多个数据一起塞入,并行计算,代价则是需要更多的内存(显存)
定义:按照batch size进行计算,得到多个loss反传更新模型的过程称为一个step
eg:
一般来说,Bert的batch size是8/16,也就是一次计算8个数据,得到8个loss然后一起反传更新模型,这也算一个step
训练完一次所有的数据,称为一个epoch
【关系】:
b
a
t
c
h
s
i
z
e
×
s
t
e
p
=
n
u
m
(
d
a
t
a
)
【
数
据
总
量
】
batch size × step = num(data)【数据总量】
batchsize×step=num(data)【数据总量】
训练完一次num(data)即为一个epoch
【loss】:
在每个step计算之后就会清零,也就是每个step有一个自己的loss。
在验证集中loss可能会先下降再上升,上升的阶段就叫过拟合。
【待写】



