0%

结论

  • 这个文章花了很多的篇幅&作者花了很多的精力去做把网络切开放在两块卡上这个事情,现在看来反而不是那么重要。近些年BERT等大模型越出越多,要回到切模型的方式上来
  • 深度很重要,去掉之后有掉点2%(但其实这个结论并不是很置信)
  • 有标注数据很重要,这使得以后很长一段时间的深度学习都比较关注有监督学习。一直到BERT的出现才把研究的视角拉回到无监督学习上面来
  • 已经开始用神经网络里面的向量来搜索图片了。神经网络里面的向量在语义空间里面的表现很好

3f2d579a485844bb6c1ffae257a04db9.png

介绍

  • 因为受限于显存大小,是把网络切开来放到里面,有很多工程上的工作,这个对于最终的结果不太重要
  • 不抽低阶特征(SIFT之类的),直接在原始的pixel上面做,是一个end to end模型
Read more »

对比学习的概念

d0a7929a0ecee1e08811adda2b6d7fe0.png
82e4e552d4c722f823ce9cb48bd3ca46.png

代理任务

  • 个体判别
  • 九宫格
  • 视频帧
  • 数据增强

可以实现无监督学习
a2bc0e96e8e5ea203da4d208e4aa8fb0.png
假设给一组数据

Read more »

总结

  • 本文针对CNN对局部信息的计算提出了一种新的操作结构,用来捕获全局信息之间的关系
  • 所谓non-local计算就是当计算某一点的响应结果时,将全局响应值带权求和
  • 使用non-local有以下几个好处:
    • 计算某一点的输出时考虑该点与全局的相关性
    • 计算不复杂的同时可以涨点
    • non-local操作保持原输入输出的尺寸不变,可以方便的加到网络中去
  • 通用公式:$y_i= \frac {1} {C(x)}\sum_{\forall j}f(x_i, x_j)g(x_j)$
    • 通常g函数就选为1*1卷积
    • f函数一版选择Embedded Gaussian高斯函数,选择其他几种实际效果差距不大
    • 特别说明一点当f函数选择为Embedded Gaussian时,公式就等同于self-attention的形式,说明self-attention是non-local的一种特例
  • 在non-local的具体实现上有一些改动用来加速计算
    • 计算相关性矩阵的时候将channel数目减半
    • 计算相关性的时候不,枚举计算全局的点,可以通过pooling做降采样
  • 训练的细节
    • 使用image-net的模型作为初始化
    • 只在non-local的最后输出加BN,其余地方都不加
  • 调参试验
    • 关于f函数的选择?对结果影响不大
    • 把non-local块加在哪里?对结果影响不大,加在最后一层有轻微掉点
    • 加non-local块的数量?加的越多越好
    • 全局时间/全局空间/全局时空?将non-local单独应用于时间/空间均有提升,不过都不如应用于全局时空提升大
    • C2D+non-local与C3D作对比?C2D+non-local好
    • 将non-local应用于C3D?也可以获得提升
    • 加长时间维度?可以取得更好的效果

Abstract

In this paper we present non-local operations as a generic family of building blocks for capturing long-range dependencies

Intorduction

Read more »

总结

  • 这篇文章提出了用CNN处理特征代替之前抽取MFCCs + 分类器的方式,获得了比较好的效果
  • 比较关注将一段音频处理为音频输入的方法
    • 将音频按照960ms切段
    • 960ms的音频每10ms用短时傅里叶变换处理(25ms)的窗口
    • 将生成的光谱图分到64个mel-spaced frequency bins里面
    • 每个桶的结果取log
    • 就生成96 * 64的二维向量然后用CNN的方式搞
  • 后面文章对比了多种模型和数据集大小的结果基本上越深的模型越好,数据集越大越好

Abstract

Finding that analogs of the CNNs used in image classification do well on our audio classification task

Introduction

Read more »

总结

  • 本文提出了TSN方法,将视频分段,每个段中随机采样帧/光流进行训练,用来解决传统方法对于长视频训练乏力的问题
  • 在网络的输入方面,除了two-stream的RGB路和optical flow,TSN尝试了RGB diff和warped optical flow等多种方式,最终是使用RGB + optical flow + warped optical flow的效果最好
  • 训练方面使用了几种方案降低过拟合
    • pre-train,不仅对RGB,对其他路也用pre-train做初始化
    • 冻结BN,加大dropout
    • scale jittering
  • 测试了多帧融合的方法,在max,avg,weighted avg中做选择,综合选取了avg方法,但是RGB单路中使用weighted AVG效果最好

Abstract

This paper aims to discover the principles to design effective ConvNet architectures for action recognition in videos

  • Our first contribution is temporal segment network (TSN)
  • The other contribution is our study on a series of good practices in learning ConvNets on video data with the help of temporal segment network
Read more »

总结

  • 这篇文章提出了几种CNN结构用于处理视频
    • single frame
    • early fusion:将CNN的input做改造一次接收多张图片
    • late fusion:两个CNN同时跑,在FC层做合并
    • slow fusion:两者融合,在这篇paper中获得best performance,但计算更慢
  • 类比于图像处理,视频处理更加耗时,在文章中提出了双流结构用于对计算速度进行优化
    • context stream: 处理整张图片,输入的大小将为原来的一半
    • fovea stream: 处理图像的中间部分,大小为原图的一半,不过分辨率更高
    • 然后在FC层附近将两个流的结果融合
    • 总体来看运算时间得以降低,但是精度却没有太多下降
  • 作者探讨了这个网络的迁移学习能力,又拿UCF-101做了实验,fine-tune 前三层的网络的效果最好

Abstract

We provide an extensive empirical evaluation of CNNs on large-scale video classification

Introduction

Read more »

总结

  • YOLO的V3版本,基本延续了上一代的特性——快的同时保持了还不错的效果
  • 主要的创新点——使用多尺度网络
  • 使用多个logistic 分类器进行分类,取代softmax
  • 提出了新的基础网络结构——Darknet-53

COCOs测试结果

  • time: 51ms
  • COCOs AP50: 57.9

Abstract

Read more »

总结

  • 这篇文章主要是在YOLO的基础上加以改进提出了更好的YOLO V2
  • 此外还提出了一种合并classification和detection数据集的方式,从而大大拓展了训练数据集的规模和分类目标数
  • 具体改进的点
    • BN:加了BN之后有2%的mAP提升
    • 用更高清的图片来fine-tune图片分类网络:有4% mAP提升
    • 使用Anchor来预测物体范围代替直接预测:准确率下降,召回率上升
      • 下面又使用了两个改进方式来改进使用Anchor的版本
      • 用K-means的方法学习数据集中的标注来选取物体范围的初始框,而不是使用Anchor尝试;为了平衡模型的复杂度和recall选定了K = 5
      • 来修正bounding-box的阶段,模型的可选择范围较大,造成模型在初始训练阶段不稳定,修改了修正的方式——使用sigmod把回归预测值固定在0~1范围内,表示在格子内的比例:相较于Anchor box版本有接近5%左右的提升
    • 加入高清特征
      • 模型最终的输出是13*13
      • 我们直接把上一层的2626的特征拿过来,将filter数量翻四倍,把维度变为1313
      • 将新的layer与之前的输出层stack到一起成为新的feature map
      • 有1%的提升
    • 多尺度训练
      • 每隔10个batch随机改变input的size大小让网络可以应对不同尺度大小的图片
      • 小图片的inference时间短,用这种方法可以方便的在mAP和测试时间之间做trade off
    • 加入了这些新的特性后诞生了YOLO v2
  • 文章中还提出了一个混合分类数据集的方式
    • 在训练过程中如果遇到了分类数据(无detection标注)那么只进行分类部分损失函数的反向传播
    • 还有一个标签不统一的问题,往往因为分类数据更加丰富所以,分类数据的标签会更细一些,文章针对这个问题建立了一颗标签语义树,不同粒度的标签可以都可以在语义树中找到正确的位置
    • 同时模型在分类预测的时候也依照语义树进行不同粒度的softmax

VOC测试结果

  • time: 15ms
  • VOC 2007: 76.8%

Abstract

Read more »

总结

  • 这篇文章提出了一种新的解决detection的网络结构
  • 不同于R-CNN系列的多阶段结构,YOLO只是用一个传统CNN结构就输出了所有的预测信息
  • YOLO的优势:
    • 快,每秒45张图片(平均每张图片耗时22ms)同时还有一个不错的mAP: 63.4
    • 处理整张图片而不是特定的一个proposal,有更少的背景误分类
    • 特征更泛化(通过更高的艺术品人像识别率来证明)
  • YOLO的劣势:
    • 每个框的bounding box数目受限
    • 每个框至多属于一类
    • 由于上述原因对于小物体的检测效果不好
  • Detection原理
    • 把图像分为 S * S块
    • 每个块输出B个bounding box信息
    • 每个bounding box信息包含五项
      • bounding box的中心的x y坐标
      • bounding box的长和宽
      • 这个bounding box包含物体的信心分
      • 共计五项
    • 此外每个块还输出在包含物体的情况下,物体所属分类的概率
    • 模型就是CNN网络,综上模型最后一层的输出是S S (B * 5 + num of classes)的一个tensor
  • 训练细节
    • 使用ImageNet pre-train + fine-tune
    • 在fine-tune阶段,把input_size扩大一倍(detection任务需要更清晰的图片)
    • 对x,y,h,w进行归一化
    • 平衡大小bounding box对损失的影响,对h,w开平方处理
    • 对包含物体的块的损失部分做加权处理(*5)
    • 对不包含物体的块的损失部分做减小权重处理(*0.5)
    • 具体公式见loss function部分

VOC测试结果

  • time: 22ms
  • VOC 2007: 63.4%
  • VOC 2012: 57.9%

Abstract

Read more »

总结

通过本篇文章,笔者第一次接触到Pair-wise训练
其实总体来看实现思路非常简单,就是通过两个point分别过模型inference然后对结果做差,将diff当做一个样本在另外一个样本之前(记$ahead_{ij}$)的对数几率,将这个几率再过一遍Sigmod函数,就得到了概率值(记$P(ahead_{ij})$)
文章很大的篇幅,证明了做差之后结果是可导的,这对模型训练至关重要,但被我可耻的跳过了……
大篇幅的证明 + 只改动几行代码的实现(对于自动求导的神经网络来说是这样的)和之前读的W-GAN感觉很像
不管怎么说Pair-wise训练算是摸到点门道了

Introduction

cast the ranking problem as an ordinal regression problem is to solve an unnecessarily hard problem, we don’t need to do this

we call the resulting algorithm, together with the probabilistic cost function we describe below —— RankNet

Read more »

中本聪比特币原始论文笔记

总结

  • 本文提出了一个去中心的分布式交易系统
    • 首先通过私钥公钥的验证方式来确保发出货币者的货币所有权
    • 通过网络广播的方式来解决双重支付问题
    • 然后我们通过工作证明(挖矿)加链式结构的方式使得作弊的成本大大增加
  • 网络整体去中心,全体匿名
  • 所有节点都可以自由离开并加入,在加入时只要同步最长区块链就可以了解整个交易历史
  • 记录交易的权利按照算力随机
  • 对挖矿奖励,以激励节点记录交易
  • 网络用符合各方利益的机制,在去中心的情况下保证可以正常运行

综述

目前的网上交易大多数是通过权威的第三方担保达成,但是由于要保证交易不被篡改、欺诈等问题,第三方机构需要花费额外的成本去维护整个系统

Read more »

知乎同名文章笔记,特此说明

智能合约

之前提到的一些技术,是支撑比特币正常运转的技术,使用同样的技术可以产生其他不同的应用,接下来我们来讨论一下整个区块链领域最热门,被认为能够改变世界的应用——智能合约

智能合约并不是合约电子化,而是——双方达成协议并签署后,无需第三方就可以强制执行合约上的内容,无法单方面撤销或者反悔的合约

Alt text

Read more »

最近区块链火的不行,各种创业公司,虽然不知道在做什么业务,不过可以先把技术了解下,本文是对知乎专栏《区块链演义》的总结,写一遍加深印象,特此说明。

到底,什么是比特币

比特币是人类在数字世界中复制最原始的货币交易的所有尝试中,到目前为止,第一个接近成功的,也是唯一接近成功的一个。

交易方式

在有中心的情况下用余额的方式记账比较方便,但是没有中心的情况下,对方需要对你的所有交易记录做校验才能证明余额的正确性,所以去中心的交易方式是——未使用的收入作为支出,比特币是用交易记录来表示的货币形式

Read more »

总结

  • 在GBDT的基础上加了诸多创新点和工程化的东西达到了可以快速、分布式训练的目的
  • 首先通过层层推导,利用泰勒展开的二阶项信息得到了一个判断分割点收益的方程:
  • 提出了两个防止过拟合的方法
    • 新训练出的树所给出的预测结果需要乘上shrinkage因子再加到森林中去
    • 对于特征(列)做采样(等同于RF中的方法)
  • 介绍了两种找最佳分割点的方法
    • 枚举所有分割点,然后找出最佳
    • 利用二阶导数信息当做权重,然后根据权重值来进行等权重划分,划分点即为分割点的候选点,然后依次遍历,此种方法可以应用于分布式计算
  • 针对于稀疏数据,提出了学习default路径的思路,在枚举分割点的时候,将缺失的信息归到两个分支的其中一个,比较效果后决定default路径的方向
  • 文章的工程化创新思路也非常多
    • 针对树训练中所需的大量排序操作设计了Block结构,把每个特征按照特征值排序,存成索引。这样可以在计算前完成排序工作
    • 文章还针对CPU的cache机制进行了存储优化,主要是使CPU的访问地址尽量连续
    • 在内存不足时,设计了Out-of-core机制,过多的数据先写在硬盘上,在要用的时候由一个独立的线程预先加载进来,加大了训练数据的最大规模。在此基础上加入了,内容压缩,存储块共享技术,对训练过程提速
  • 补充一些与传统GBM的区别
    • 使用了泰勒展开二阶项信息(牛顿法)计算下降方向
    • 不搜索步长
    • 加入正则项
    • 可以并行处理
    • 内置缺失值处理规则
    • 使用后剪枝而非预剪枝(GBM)

ABSTRACT

We propose a novel sparsity-aware algorithm for sparse data and weighted quantile sketch for approximate tree learning.

INTRODUCTION

Read more »