李宏毅ML2022(1)
李宏毅ML课程(第1讲)
1. 前言
$$
Machine \space Learning \approx Looking \space for \space Function
$$
本次课程主要基于 Neural Network,即寻找的适和的函数是用类神经网络表示的。
首节主要讲了课程安排,以及每个 lecture 的内容。感觉老师讲的生动有趣。其中印象深刻的部分(之前对这个名词也没有清晰的概念)是 Model attack ,以分类任务为例,本来一张猫猫的图,分类为猫,但是加入特定的噪声以后,肉眼看不出图片有什么异常,但是模型的预测结果为Fish,而且准确率为 1,很神奇,期待一下课程。还有 Meta-Learn 机器学习自己提出算法来学习。
2. Machine/Deep Learning 简介
MeliusNet
MeliusNet: Can Binary Neural Networks Achieve MobileNet-level Accuracy?
2020 arXiv
code : https://github.com/hpi-xnor/BMXNet-v2
0. 摘要翻译
以往的方法通过提升通道数和使用多个二值基(binary bases)的方法来避免二值化带来的精度损失(低质量的和低容量的特征映射)。这篇文章中,作者提出了一个新的架构:MeliusNet。由交替出现的 DenseBlock 组成,提升了特征的容量;提出的 ImprovementBlock 提升了特征的质量。在 ImageNet 上的实验证实了,其相比其他 BNN 模型在计算量和准确度上都更有优势。本文训练的 BNN 模型,首次实现了与 MoblieNet-v1 在模型尺寸,操作数量和准确性上相匹配。不理解为什么要在模型尺寸上相匹配?模型大了,准确率高有什么亮点吗?可能是 MoblieNet-v1 本身就是比较轻量的,可以部署在嵌入式设备上的模型,模型尺寸相匹配,可能想说明 MeliusNet 也同样轻量吧。
我想知 ...
漫谈Attention-Mechanism[注意力机制]
漫谈 Attention Mechanism[注意力机制]
Attention 的核心思想就是从关注全部到关注重点。
看了这个 up 主的一些介绍【传送门】
1. 注意力机制的由来
如下面这张图,我们观察一张图片或者一段文字的时候,并不是对每个部分都付出了同样的注意力,而是有所侧重的,如下面这张图中,婴儿的脸,文字的标题这些是我们更关注的。但是对于 CNN, RNN, 以及 LSTM 等模型很难决定什么是重要的,什么不重要,于是产生了注意力机制。
2. 注意力机制的实现过程
那么注意力机制是怎么在神经网络中实现的呢?
首先我要观察一张图,我可能会习惯性的有所侧重的去看。我潜意识中会有一个Q(查询对象)表示我更关心的内容,而准备观察的图是K(被查询对象)。
看一段评论区的解释:
Q是要搜索的词, 例如 “苹果”这个词在 ,“我要吃苹果” 这句话中与每个词的相似度求解。 Q = 苹果, K1 = 我 k2=要 k3=吃 k4=苹果。 Q 分别与K1-4 进行相似度的比较得到一个score 分数,如果这个score 越高说明相似度越高。 然后通过softmax 归一化,就是相似度的百分比 ...
ReActNet
ReActNet: Towards Precise Binary Neural Network with Generalized Activation Functions
2020 Cornell University - arXiv
代码地址:https://github.com/liuzechun/ReActNet
0. 摘要翻译
本文中,作者提出一些方法在没有增加任何运算代价的同时来提升二值网络,使其逼近实值网络的准确度。
作者首先构建了一个基准网络,通过修改和二值化一个带有无参数 shortcuts 的实值网络,绕过了所有中间卷积层包括下采样层。这个基准网络在准确性和效率之间得到了很好的权衡,在只需大约一半计算成本的情况下超过了大多数现有二值网络的表现。
通过大量实验和分析,作者观察到二值网络对于激活分布的变化是敏感的。基于这个重要的观察,作者提出了扩展传统的 Sign 和 PReLU 函数,使其能够在接近零额外成本的情况下可以显式的学习对分布的重塑和平移。
最后,作者采用分布损失来强制二值网络学习与是指网络相似的输出分布。
作者展示了,在融合了上述方法之后,提出的 R ...
Bi-Real-Net
Bi-Real Net: Enhancing the Performance of 1-bit CNNs With Improved Representational Capability and Advanced Training Algorithm
2018 ECCV
code: https://github.com/liuzechun/Bi-Real-net
0. 摘要
为了使 1-bit CNNs 的图像分类准确度接近其实值网络,本文提出了 Bi-Real Net 网络结构。通过 identity shortcut 方式将实值激活(在 1bit 卷积和(或)BatchNorm 层之后)连接到连续块的激活。大幅提升了网络的表达能力,而计算成本增加几乎可以忽略。
开发了针对 1bit CNNs 的训练算法,其中有三个技术创新:
推导出了对于激活的不可微 sign 函数的 tight 近似;
提出了关于权重的具有大小感知的梯度,来更新权重;
使用 clip 函数而不是 ReLU 来预训练实值 CNN 模型,以更好的初始化 Bi-Real net。
本文提出的算法在 Image ...
FABNet
FABNet: Frequency-Aware Binarized Network for Single Image Super-Resolution
2023 IEEE Transactions on Image Processing
代码地址:https://github.com/xrjiang527/FABNet-PyTorch
0. 摘要翻译
BNN在实时性和 SISR 方法的性能上取得了标志性成果。现有的方法总是采用 Sign 函数来量化图片特征,但是忽略了图片的空间频率信息。我们认为可以考虑不同的空间频率组件来最小化量化误差。为了实现这个目标,我们为 SISR 提出了频率感知二值网络(FABNet)。首先,我们利用了小波变换把特征分解为低频和高频组件。然后应用“分而治之”策略,使用设计良好的二值网络结构来分别处理他们。此外,我们引入了一个动态二值化过程,包含了在前向传播过程中使用学习阈值进行二值化,在反向传播过程中动态近似,这高效的解决了多样的空间频率信息。相比现有方法,我们的方法在减小量化误差和恢复图像纹理方面是有效的。扩展实验在四个基准数据集上进行,证实了这种方法在 ...
XNOR-Net
XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks
这是 2016 年的文章。
代码地址(lua): https://github.com/allenai/XnoR-Net/
python code : https://github.com/jiecaoyu/XNOR-Net-PyTorch
0. 摘要翻译
作者提出了两种有效的方法来近似标准卷积神经网络:Binary-Weight-Networks 和 XNOR-Networks。Binary-Weight-Networks 中,二值化的卷积核节省了 32 倍的内存。在 XNOR-Networks 中,过滤器和卷积层的输入都是二值化的。XNOR-Networks 使用简单的二元操作近似卷积。最终实现了 58 倍的卷积操作加速(相比高进度的操作数量)和 32 倍的内存节省。XNOR-Nets 提供了在 CPUs 上实时运行 SotA 的可能。作者在 ImageNet 分类任务上评估了该方。使用 AlexNet 二值化后的网络,其在图 ...
BASIC BINARY CONVOLUTION UNIT FOR BINARIZEDIMAGE RESTORATION NETWORK
BASIC BINARY CONVOLUTION UNIT FOR BINARIZEDIMAGE RESTORATION NETWORK
Published as a conference paper at ICLR 2023
1. 作者做了什么?
由于我的毕设是基于BNN的轻量图像复原,所以想找一些基于BNN的工作,前些年的工作主要是基于BNN在做图像分类,在底层视觉领域做的并不多。
作者对网络的BN等部分进行了测试,分析出了其在底层视觉任务的中的作用。
这篇文章提出了一个新的卷积单元BBCU,利用这个卷积单元替代了传统神经网络的一些部分,从而将BNN应用在图像超分、去噪、去模糊等领域,取得了比一些全精度方法更快,效果更好的结果。
这篇文章是字节跳动发的,我感慨一下,对于这种我能想到有落地意义的研究,企业的洞察力还是强,而且动作很快,相当于给出了这个方向的一个 baseline 。
老师希望我开题能提出如何改进,可是我对这个领域感觉太模糊了,提不出切实可行的改进方案,这就是论文粗读带来的弊端,好像了解了,但什么也不知道,所以还是得多精度一些文章,了解了细节才能有 ...
论文阅读方法
论文阅读方法
前言
读 5~20 篇论文就足以了解一个领域。
读 50~100 篇论文就可以对一个领域非常熟悉。
阅读
这里不是精读、是大量读文章扩展知识的方法。
快速浏览题目、小标题、图片(网络架构图等)
INTRODUCTION、CONCLUSION 并仔细看图片及其注释、快速浏览文章,related works 可能会比较有用(毕竟作者会经历多写,让每个审稿人开心的看到自己的成果,从而提高过审率)
跳过数学推理,快速阅读
阅读全文,但是跳过一些无关的描述(作者写的时候也不知道什么重要什么不重要,像一些对未来的猜测,奇怪的应用等都可以直接跳过,直击算法的核心)
需回顾问题
作者试图完成什么?
这个方法的关键要素是什么?
你能从中收获什么有用的思想?
你还想进一步读哪些参考文献?(或者还有哪些工作你想继续追踪下去?)
完全掌握
通读后,认为自己完全理解。
从头开始,拿出一张白纸,从0开始,推导出所有的数学结论。(个人认为代码实现能力可能也是这样锻炼的)
code: 最简单的是跑通。能改已经算有一定的理解了。
职业规划
工作最重要的是你的 manager 以及你将要加入的团 ...
Cpp Primer CH1
为了能在寄算计大潮中存活,要认真学习C++了,边看《C++ Primer》边做课后习题,把每一章的习题都记录下来。
因为以后开发用 Linux 环境比较多,所以运行环境用 Ubuntu,使用 VS Code 作为编译器。
使用的服务器的版本信息如下:
g++ 的版本信息如下:
《C++ Primer》CH1 开始
练习1.1
查阅你使用的编译器文档,确定它所使用的文件命名约定。编译并运行第2页的main程序。
1234int main(){ return 0;}
练习1.2
改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
1234int main(){ return -1;}
可以看到返回的错误号是 255,开始困惑,不是 return -1; 吗?原因如下:
返回值本应该是 -1,但是从函数中返回的数值会通过加减 256 的方式将返回值控制在 0~255 之间。
练习1.3
编写程序,在标准输出上打印 Hello, World。
1 ...



![漫谈Attention-Mechanism[注意力机制]](/img/bg38.jpg)






