序列模型与循环神经网络
序列介绍现实生活中,有许多数据并不是像图片一样,看一眼就能了解全部信息. 举个简单的例子: 一句话中,词语的出现顺序可能也会影响这句话的信息量:“狗咬人”所带来的信息远没有“人咬狗”带来的信息量大…… 序列数据已经存在了人们的生活中当中: 音乐、语言和视频 地震:大地震后,往往伴随小的余震 如何对序列进行统计上述提到了信息量,而信息量这个词往往就和概率相关了 在时间$t$观察到$x_t$,那么得到$T$个不独立的随机变量$(x_1,…x_T) - p(\boldsymbol x)$ 使用条件概率展开$p(a,b)=p(a)p(b|a)=p(b)p(a|b)$ 所以$p(\boldsymbol...
微调
介绍神经网络除了最后一部分,其余部分都是在做特征提取,如果目标数据集属于原数据集,那么训练好的模型就可以直接拿来用了. 实际上Chatgpt就是属于这种(一句话总结:让你的模型站在巨人的肩膀上……) 假设使用数据集已经训练出了一个模型,那这个对目标数据集仍有很好的适用性(最后一层因为label的原因,往往发生改变) 微调的方式训练 是一个目标数据集上的正常训练任务,但使用更强的正则化 使用更小的学习率 使用更少的数据迭代 源数据集远复杂于目标数据,通常微调效果更好 重用分类器权重 固定一些层 神经网络通常学习有层次的特征表示 低层次的特征更加通用 高层次的特征则更跟数据集相关 可以固定底部一些层的参数,不参与 更新 更强的正则 代码这里的代码比较复杂,所以没有全部放入文章中建议认真看 https://courses.d2l.ai/zh-v2/assets/notebooks/chapter_computer-vision/fine-tuning.slides.html 123pretrained_net =...
图像增广
介绍在不同场景下,图片很可能环境中其他因素干扰,比如噪声 如果在训练数据时引入噪声,模型往往有更好的鲁棒性 数据增强 增加一个已有数据集,使得有更多的多样性 在语言里面加入各种不同的背景噪音 改变图片的颜色和形状 翻转: 12345678import torchvision #图片,图片增广的办法,生成结果两行四列,scale图片画多大def apply(img, aug, num_rows=2, num_cols=4, scale=1.5): Y = [aug(img) for _ in range(num_rows * num_cols)] d2l.show_images(Y, num_rows, num_cols, scale=scale)apply(img, torchvision.transforms.RandomVerticalFlip()) #上下翻转apply(img, torchvision.transforms.RandomHorizontalFlip()) ...