深度学习、计算机视觉学习过程。
人工智能最新学术研究和技术实现追寻,可关注:
学习经验参考:
AI Conference Deadlines:https://aideadlin.es/?sub=ML,CV,NLP,RO,SP,DM
比赛:
文章和博客:
科普文章:
入门:
基础:
深度学习系列文章:
pytorch-handbook/chapter4/4.1-fine-tuning.ipynb [荐]
把别人现成的训练好了的模型拿过来,换成自己的数据,调整一下参数,再训练一遍,这就是微调(fine-tune)
。。。
其实 "Transfer Learning" 和 "Fine-tune" 并没有严格的区分,含义可以相互交换,只不过后者似乎更常用于形容迁移学习的后期微调中。 我个人的理解,微调应该是迁移学习中的一部分。微调只能说是一个trick。
下面只介绍下计算机视觉方向的微调,摘自 cs231
- ConvNet as fixed feature extractor
- Fine-tuning the ConvNet:固定前几层的参数,只对最后几层进行 fine-tuning ...
- Pretrained models:使用整个 pre-trained 的 model 作为初始化,然后 fine-tuning 整个网络而不是某些层,但是这个的计算量是非常大的,就只相当于做了一个初始化。
为什么预训练?
深度网络存在以下缺点:
解决方法:逐层贪婪训练。无监督预训练(unsupervised pre-training)即训练网络的第一个隐藏层,再训练第二个…最后用这些训练好的网络参数值作为整体网络参数的初始值。无监督学习→参数初始值;监督学习→fine-tuning,即训练有标注样本。经过预训练最终能得到比较好的局部最优解。
参考:深度学习中的非线性激励函数以及unsupervised pre-training
强化学习(Reinforcement Learning)的输入数据作为对模型的反馈,强调如何基于环境而行动,以取得最大化的预期利益。与监督式学习之间的区别在于,它并不需要出现正确的输入/输出对,也不需要精确校正次优化的行为。强化学习更加专注于在线规划,需要在探索(在未知的领域)和遵从(现有知识)之间找到平衡。——from:https://feisky.xyz/machine-learning/reinforcement.html
强化学习是一类算法, 是让计算机实现从一开始什么都不懂, 脑袋里没有一点想法, 通过不断地尝试, 从错误中学习, 最后找到规律, 学会了达到目的的方法. 这就是一个完整的强化学习过程. 实际中的强化学习例子有很多. 比如近期最有名的 Alpha go, 机器头一次在围棋场上战胜人类高手, 让计算机自己学着玩经典游戏 Atari, 这些都是让计算机在不断的尝试中更新自己的行为准则, 从而一步步学会如何下好围棋, 如何操控游戏得到高分。——from:什么是强化学习 - 知乎
GAN:一种概率生成模型。简单说, 概率生成模型的目的,就是找出给定观测数据内部的统计规律,并且能够基于所得到的概率分布模型,产生全新的,与观测数据类似的数据。
举个例子,概率生成模型可以用于自然图像的生成。假设给定1000万张图片之后,生成模型可以自动学习到其内部分布,能够解释给定的训练图片,并同时生成新的图片。
与庞大的真实数据相比,概率生成模型的参数个数要远远小于数据的数量。因此,在训练过程中,生成模型会被强迫去发现数据背后更为简单的统计规律,从而能够生成这些数据。——from:深度学习新星:GAN的基本原理、应用和走向 | 硬创公开课 | 雷锋网
AutoML 基本分以下几个方向:(——from:https://zhuanlan.zhihu.com/p/75747814)
自动数据清理(Auto Clean)
自动特征工程(AutoFE)
超参数优化(HPO)
元学习(meta learning)
神经网络架构搜索(NAS)NAS 看作 AutoML 的子域,并且与 HPO 和元学习有重叠。根据三个维度,可以对 NAS 的现有方法进行分类:搜索空间,搜索策略和性能评估策略。
- 搜索空间(Search Space): 搜索空间原则上定义了可以代表哪些体系结构。结合适用于任务属性的先验知识可以减小搜索空间大小并简化搜索。然而,这也引入了人为偏见,可能会阻止找到超越当前人类知识的新颖架构构建块(building blocks)。
- 搜索策略(Search strategy):搜索策略说明了如何做空间搜索。它包含了经典的探索-开发(exploration-exploitation)之间的权衡。一方面,需要快速找到性能良好的架构,另一方面,避免过早收敛到次优架构(suboptimal architecture)区域。
- 性能评估策略(Performance estimation strategy):NAS的目标通常是找到在未知数据实现高预测性能的架构。性能评估是指评估此性能的过程:最简单的选择是对数据架构执行标准训练和验证,但遗憾的是,这种方法计算成本很高,限制了可以探索的体系结构量。因此,最近的研究大多集中在开发出方法去降低这些性能估计成本。
相关阅读:
先学习掌握以下内容,包括 Python 基础、Anconada 安装等等:
Python常用科学计算库快速入门(NumPy、SciPy、Pandas、Matplotlib、Scikit-learn) | 更详细的学习见:
scikit-learn 学习,网上资料:
Sklearn Universal Machine Learning Tutorial Series | 莫烦Python
混淆矩阵及confusion_matrix函数的使用 | 分类模型评判指标(一) - 混淆矩阵(Confusion Matrix) | 深度学习F2-Score及其他(F-Score) | Kappa系数 - 准确率 Accuracy、精确率 Precision、召回率 Recall、IoU 、f1_measure、kappa 系数等评价指标的计算。
注:要是碰到混淆矩阵中,某个类别的预测都是 0,precision=tp/(tp+fp),那除数为 0 呢,代码通不过啊,怎么办?通过和他人交流,有大佬说一般类似这么写:
xx / (xx+1e-10)
加上 1e-10 。ok,mark 了。
Python 图像处理库学习:
机器学习中在线训练和离线训练?
请问在神经网络算法当中提到的在线训练和离线训练分别是什么意思? - 知乎 - 其中一个回答:
offline 其实和 batch 更相似,假定这个样本有 m 条记录,offline 会训练 m 的整数倍次数,online 不知道会训练多少次 可能以一条记录训练了 10 次 第二条 8 次,第三条 1 次……
其他知识:
1)损失函数(代价函数)
2)自定义损失函数
1)优化器
2)学习率/权重衰减/动量/滑动平均等
1)批归一化(Batch Normalization):
2)批大小(Batch Size)
3)学习率(Learning Rate)
探索学习率设置技巧以提高Keras中模型性能 | 炼丹技巧 - GitHub 链接:https://github.com/gunchagarg/learning-rate-techniques-keras
1、什么是基准测试?
基准测试是一种测量和评估软件性能指标的活动。你可以在某个时候通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件环境发生变化之后再进行一次基准测试以确定那些变化对性能的影响。这是基准测试最常见的用途。其他用途包括测定某种负载水平下的性能极限、管理系统或环境的变化、发现可能导致性能问题的条件,等等。——from:http://www.blogjava.net/qileilove/archive/2012/07/05/382241.html
2、神经网络不收敛指的是什么?
①误差一直来回波动,进入不到容忍度内。②跟迭代不收敛或者系统不稳定差不多,上下波动不能趋近一个定值。
3、深度学习中的端对端?
端到端指的是输入是原始数据, 输出是最后的结果。
4、Global Average Pooling 全局平均池化?
[1] global average pooling 与 average pooling 的差别就在 "global" 这一个字眼上。global 与 local 在字面上都是用来形容 pooling 窗口区域的。 local 是取 feature map 的一个子区域求平均值,然后滑动这个子区域; global 显然就是对整个 feature map 求平均值了。
[2] 说白了,“global pooling”就是pooling的 滑窗size 和整张feature map的size一样大。每个 W×H×C 的feature map输入就会被转化为 1×1×C 输出。因此,其实也等同于每个位置权重都为 1/(W×H) 的 FC 层操作。
计算机视觉牛人博客和代码汇总:计算机视觉牛人博客和代码汇总(全) - findumars - 博客园
1)网上博文
★★★CS231n课程笔记翻译:神经网络笔记 2,内容如下:
- 设置数据和模型
- 数据预处理
- 权重初始化
- 批量归一化(Batch Normalization)
- 正则化(L2/L1/Maxnorm/Dropout)
- 损失函数
一般数据预处理流程:左边: 原始的2维输入数据。中间: 在每个维度上都减去平均值后得到零中心化数据,现在数据云是以原点为中心的。右边: 每个维度都除以其标准差来调整其数值范围。红色的线指出了数据各维度的数值范围,在中间的零中心化数据的数值范围不同,但在右边归一化数据中数值范围相同。
img = cv2.resize(cv2.imread('../../Downloads/cat2.jpg'), (224, 224))
mean_pixel = [103.939, 116.779, 123.68]
img = img.astype(np.float32, copy=False)
for c in range(3):
img[:, :, c] = img[:, :, c] - mean_pixel[c]
img = img.transpose((2,0,1))
img = np.expand_dims(img, axis=0)
可以看这里这个回答:https://gist.github.com/baraldilorenzo/07d7802847aaad0a35d3#gistcomment-1616734,解释是:The mean pixel values are taken from the VGG authors, which are the values computed from the training dataset.
另外也常看到代码是 X = X /255.0
这样处理。
PCA 和白化(Whitening) 是另一种预处理形式。在这种处理中,先对数据进行零中心化处理,然后计算协方差矩阵,它展示了数据中的相关性结构。
(余下内容略...
2)Data Augmentation - Python 代码
image——Data Augmentation的代码 - CSDN博客
- 切片(crop)
- 左右上下翻转
- 图像旋转
- 图像归一化处理
- 图像平移
- 调整光照
图像处理:
网上博文:
优质专栏:
学习:
其他:
优质专栏:
如何找论文:如何找论文 - 知乎
SemanticScholar - 一个免费学术搜索引擎,其检索结果来自于期刊、学术会议资料或者是学术机构的文献。
只要你有论文的 URL 或者 DOI(Digital Object Identifier)就可以粘贴到搜索框里,点击“Open”就会出现你想要的论文。注:什么是 DOI,请看 学术干货丨DOI是什么?怎样利用DOI快速检索文献? – 材料牛
如何进行论文研读?
如何进行论文写作?
学位论文排版:吐血推荐收藏的学位论文排版教程(完整版)
Improving Deep Neural Networks 初始化 一般的数据集,训练:开发集=7:3;训练:开发:测试=6:2:2 大数据集:几万,99:1,开发/测试:1万就够了 扩大网络+正则化:减小偏差不增大方差 增加数据:减小方差不增大偏差 正则化 L2 一般用L2多于L1 通常使用开发集或hold-out交叉验证,来选择正则化参数λ 正则化大→w趋于0,则①某些隐藏单元接近0,网络变
TL:DR 尽可能使用迁移学习。否则,对于已经是广泛研究的问题,先从复制网络结构开始。 网络结构应该总是由实验和验证误差来确定。 更深(层多),更浅(层少)的网络更难优化,但是更容易有更好的泛化误差。 一定要使用 early stopping(早停),两种方法: 在整个数据集上使用新的参数再次重新训练模型,在到达先前模型的早停点时停止训练。 保留早停点时的参数,继续在所有数据上训练,当平均训练误差
Sina Weibo:小锋子Shawn Tencent E-mail:403568338@qq.com http://blog.csdn.net/dgyuanshaofeng/article/details/83477547 [1] Multi-source Deep Learning for Human Pose Estimation CVPR 2014 [paper]
转自github,感谢作者mrgloom的整理 链接:https://github.com/mrgloom/awesome-semantic-segmentation Awesome Semantic Segmentation Networks by architecture Semantic segmentation U-Net [https://arxiv.org/pdf/1505.045
Pos1 Name Description Language Stars Today Total Stars 1 pytorch Tensors and Dynamic neural networks in Python with strong GPU acceleration C++ 18 17245 2 keras Deep Learning for humans Python 16 3178
官网 链接:CS231n: Convolutional Neural Networks for Visual Recognition Notes: 链接:http://cs231n.github.io/ 中文字幕视频 by 大数据文摘 链接:http://study.163.com/course/courseMain.htm?courseId=1003223001 课件中文翻译 by 杜克 链接: