🐒PyTorch进阶

type
status
date
slug
summary
tags
category
icon
password

📝QA


现在用0.1而每次减少十倍的做法很少了,有cos的用法,没用dropout,没有全连接层
做工程的话,是用预训练模型在小数据上微调(保留特征提取的层),源数据集远复杂于目标数据,通常微调效果更好。能过使用更强的正则化,使用更小的学习率,使用更少的数据迭代次数
在卷积神经网络中,一般的卷积层包括卷积操作、批归一化和激活函数(比如ReLU)
参数量 (需要多少个核元素)= 入通道数*出通道数*核数^2
性能与准确性一般不能兼得
提高泛化性: 增加高质量数据而不仅仅是数量
pytorch的data loader 有哪些常用的加速方法:开多进程
数据增广:测试集里面可能会有怎么样的结果,从后往前去决定使用哪个,这部分代码可以好好研究一下
打比赛快速上手架构
 

📝数据

如何找数据:


  1. Kaggle Datasets Google DataSet search tensorflow huggingface Open Data on AWS
  1. 学术界(干净但单一) 竞赛数据集(偏应用,做过预处理)
  1. 生成式获得数据 GAN
  1. 其他取大量数据的方法:
    1. selenium包抓网页数据、beautifulSoup包解析html、用服务器去爬(内存最重要)、3s 重启机器防禁IP、找图片可以用正则表达式、需要规避法律隐私风险
  1. 热门的数据集 MNIST ImageNet AudioSet Kinetics(行为) KITTI(自动驾驶)

标注相关:


  1. 众包: 需要用户界面。
  1. 半监督学习:
    1. 少量标注,大量是没标注的
      假设:连续性假设(特征相似具有相似的同标签)、聚类(同标签)、流型假设(内在复杂性低,可降维)
      自学习: 先用有标号的数据来训练一个小的模型,然后小部分没标号的数据来训练出一些伪标号,再用这些数据继续训练一个模型,不断去循环,特别置性的会被保留下来
      不用线上部署,所以可以用很贵的模型,深的神经网路,模型融合
  1. 主动学习:
    1. 最有意思的给人来标注,最不置性的拿出来众包,置信的数据给自学习
      再把这些数据用来训练模型
    2. 多模型训练: 投票选哪个
    3. 质量控制:
      1. 多个标注人: 5个人,投票, 先2个人,或先一个人然后一个模型,优化标注工
  1. 弱监督学习:
    1. 数据编程:启发式标号, 关键词 情绪分析 总结部分规律

数据增强:


  1. 文本增强方式: 翻译
 

📝任务与训练

CV


常见任务:图像分类、目标检测、语义分割、实例分割、目标跟踪、人脸识别、姿态估计、图像生成、超分、去噪、修复、风格迁移、视频理解、图像描述生成、图像检索。

NLP


常见任务:文本分类、命名实体识别、信息抽取、机器翻译、情感分析、生成、语义理解、纠错、文本分类迁移学习、文本聚类、关系抽取。

批量归一化


  1. 对每一层的输入数据进行标准化处理,使其满足均值为0,方差为1的分布。它的主要作用在于加速了深度神经网络的训练,并增强了深度神经网络的泛化性能。
  1. 具体来说,使用批量归一化可以带来以下好处:
    1. 对输入数据进行标准化,可以使得每个特征的重要性更加平衡,从而避免了某些特征对于模型的影响过大导致的不稳定性。
    2. BN可以使得梯度传播更加稳定,避免梯度消失或爆炸的情况发生。
    3. BN可以提高学习率,由于输入数据已经被标准化,如此一来模型就不再那么敏感了,我们可以加大学习率,从而使得模型更快收敛。
    4. BN可以降低网络对于初始权重的依赖性,使得训练更加稳定,泛化性能更加强大。
    5. BN可以起到一定的正则化作用(惩罚项),使得模型在训练集上的表现更加鲁棒,泛化性能得到了提高。

多GPU实现


分布式训练


 

📝图像分类

ResNet


  1. 网络特别深的时候,会出现梯度爆炸或者消失,反向传播的过程中会进行连乘或连加。解决方法是良好的初始化,权重不能过大或者过小,或者归一化操作
  1. 原理
    1. 训练精度变差: 并不是过拟合,训练误差也变得很差
    2. 深层网络 不应该比浅层网络的效果差,将多的那些层都变成1,但SGD做不到
    3. 深层如何设计:深层的结果+浅层的结果 作为输出
    4. 块之间使用残差链接,SGD的精髓在于跑得动,梯度够大
    5. 大的数据集需要深的神经网络,加上那项不会让模型变坏,因为坏指的是小梯度,小梯度则权重自然小
    6. 为什么能训练千层 梯度可以理解为 输出与输入的相似度 学习率也会影响梯度大小 深层网络难训练的原因是说梯度一般比较小

其他经典分类网络


  1. LeNet手写数字 卷积层学习图片的空间信息,池化层降低图片敏感度,全连接层转换成10类 线性层那里怎么写 算一下最后输出的维度5*16*16
  1. AlexNet: 多了 数据增强 丢弃 ReLu(梯度消失减缓) maxPooling 调出来的
  1. VGG: 有规则的更深更大, VGG block这个理念,只要设计的块具有好的性质,那么加深只需要不断重复复制这个块就好了,每次卷积块之后都可以选择接一个池化层,这样feature map 的size也就通了。VGG16 16个块,卷积层后的第一个全连接层最占内存
  1. NIN(网络中的网络):
    1. 到全连接层的部分非常耗内存,取消全连接层 交替使用NiN块(增大通道数,要到1000)和步幅为2的最大池化层(减小HW) 最后使用全局平均池化层得到输出其输入通道数是类别数 假设卷积层的最后输出为6 × 6 × 3,经过GAP转换后,变成了大小为 1 × 1 × 3 的输出值,也就是每一层 h × w 会被平均化成一个值(类别数)
  1. GoogleNet:
    1. inception块(全都要,并行,输出通道直接相加) 不改变通道数 把高宽减半叫一个stage Inception块用4条有不同超参数的卷积层和池化层的路来抽取不同的信息。它的一个主要优点是模型参数小,计算复杂度低 GoogleNet使用了9个Inception块,是第一个达到上百层的网络后
       

📝目标检测


边框: 4个数字,左上的点+右下点 或者左上+ 宽高
数据集: 文件名,物品类别,边缘框
预训练完的迁移学习的model,创造数据集
锚框
 

📝NLP


文本数字化
  1. 向量空间模型
    1. one-hot编码(独热编码),其思想就是给每个不同的单词一个唯一对应的数字
      词袋模型
      “我(1)是(2)天才(3),我(1)爱(4)读书(5)”、“你(6)是(2)帅哥(7),你(6)爱(4)美女(8)”这两段话总共有8个不同的单词,我们看可以用8维的向量表示每一句话。
      [2,1,1,1,1,0,0,0] “我是天才,我爱读书”
      [0,1,0,1,0,2,1,1] “你是帅哥,你爱美女”
      TF-IDF
      引进了文档频率来弱化像“的”、“我”、“你”这样的词的权重
      DF指代文档频率,I的英文是Inverse,表示逆文档频率。也就是说,文档频率越高,这个词的权重越低。
      “我是天才,我爱读书”可以向量化为 [2/1, 1/2, 1/1, 1/2, 1/1, 0, 0, 0]。
  1. 分布式表示
    1. 喜欢”和“喜爱”在语义上很相近
      它将一个词表示为一个低维、稠密的向量,它能使得语义上相近的词的词向量也相近(即向量之间的距离小)
      文本的分布式表示的核心思想是一个词的语义由它经常一起出现的词决定
      得到词向量的技术大致也有两种:基于计数的和基于预测的
      基于计数的文本的分布式表示
      基于预测的文本分布式表示:
      它有m中可能(m为所有词的个数)。所以我们可以把这个问题看成机器学习中的多分类问题,类别个数为m,输出的是第n+1个词属于每个词的概率。
      甚至有这样一句话:万物皆可以Embedding
      Bengio提出的网络结构是用前n个词去预测第n+1个词,而Word2Vec提出了两个训练模式:CBOW和Skip-gram
      CBOW模型是根据上下文预测中间的词。Skip-gram是根据中间的词去预测上下文。和Bengio提出的网络结构类似,最终得到的C矩阵就是我们需要的词向量。
机器学习分类器: 架构 调参 经验
序列模型
序列模型: 一个点与他的前序是有关系的,比如说一句话
notion image
自回归moxing: 自身过去数据来预测未来
马尔科夫假设A:假设当前当前数据只跟有限个过去数据点相关,就是向量变标量,可以用多层感知机计算
notion image
潜变量模型B:H潜变量来概括历史信息,两个模型,圈圈
notion image
时间序列模型怎么准备:
滑动窗口,多退少补
【50,1】 【窗口大小,输入()】
网络怎么去搭
文本预处理
每个文本序列又被拆分成一个标记列表: 叫做token,可以是单词,也可以是字符
词汇表:把token映射到从0开始表示的索引
OpenAI的API:
调用:
返回一个respond
openai.ChatCompletion.create()参数:
Max Tokens Stop n多个回答
Frequency Penalty(低重复) Presence Penalty(高组织)
温度: 词的概率分布进行重新加权,温度越低,生成的文本就越倾向于高概率的词
Top P (Nucleus Sampling):概率分布的前p个高概率词
数据处理:
将一个JSON格式的问题数据集转换为OpenAIGPT模型可接受的JSONL格式
 
CNN越减越小,FCN网络利用上采样和反卷积到原图像大小。然后做像素级的分类。输入原图,经过VGG16网络,得到特征map,然后将特征map上采样回去。
通道存类别
语义分割:
像素打label
实例分割
UNet反向传播
SGD with momentum 用了加权的交叉熵形式
反卷:padding其实算是加在结果上的 stride输出变大 加padding 输出会变小
notion image
notion image
上一篇
Transformer
下一篇
大模型开发(使用GPT)
Loading...
文章列表
一枚热爱技术与产品的产品经理
基本信息
薯塔AI
产品修炼
技术分享
编码知识
AI相关
行业知识