笔记 :归纳总结 (一)

孤街浪徒 提交于 2019-11-28 13:09:57

原文: http://blog.gqylpy.com/gqy/480

置顶:来自一名75后老程序员的武林秘籍——必读(博主推荐)


来,先呈上武林秘籍链接:http://blog.gqylpy.com/gqy/401/

你好,我是一名极客!一个 75 后的老工程师!

我将花两分钟,表述清楚我让你读这段文字的目的!

如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍!

没错,我就是这个老者!

干研发 20 多年了!我也年轻过,奋斗过!我会画原理图,会画 PCB,会模拟,会数字!玩过 PLC,玩过单片机,会用汇编,会用 C!玩过 ARM,比如 PLC,STM32,和时下正在起飞的 NXP RT1052!搞过 DSP,比如 TMS320F28335!搞过 FPGA,不管 Xilinx 还是 Altera,也不管是 Verilog 还是 VHDL,或者直接画数字电路图!我懂嵌入式系统,比如 uCOS 和 Linux!我懂开源的硬件,比如 Arduino 和树莓派!我也搞软件,学了一堆上位机的语言C#,JAVA,Python,Kotlin,Swift!会写爬虫工具,又自学写APP,不管Android 还是 IOS!

可是这一切有什么用呢?土鸡瓦狗!不值一提!干技术的永远就是最苦逼的那个人!

我相信看到这里的你,应该是个 IT 圈的人!或许是个学生,在学习某个技能!或者是个初入职场的年轻人,在啃某个技术!或者是个工程师,被项目困住,想找个资料快速突破阻碍!反正不管怎么样,你们都不会是泛泛之辈,不可能轻易交出智商税!

所以我把这份资料放进我的收费资源里,以证明接下去我要跟你讲的这本武功秘籍是可以真真实实的帮你赚到钱的!

我不知道叫它什么好,我把它写的像武林秘籍!所以我姑且叫它《武林秘籍》或者叫《赚钱秘籍》!

《武林秘籍》里封装了一个本人近期创造的一个可以一劳永逸的赚钱方法!你可以理解为躺着赚钱,或者挂机赚钱!请你放心,不是让你去违法!

我是一个IT男,从来不忽悠别人,这是我做人的原则。若此举能帮助你付起房子首付与月供,减轻一些目前高房价的压力,何乐而不为呢!

我提取里边几个要点:

  1. 将你手里有的资源按照说明书一步一步完成所有动作就可以躺着赚钱。
  2. 你不可能不劳而获,但是用这个方法确实是可以一劳永逸!
  3. 我用业余时间操作这个项目三个月,现在每天稳定收入300+。
  4. 里边会告诉你哪些是资源,怎么源源不断的获取资源。
  5. 里边会告诉你怎么获取爆炸的流量。
  6. 里边会告诉你很多黑技能(不是干坏事)。
  7. 总之,里边字字如金,有些东西我不告诉你可能这辈子都不会知道!

交了这波智商税,你的能力会爆涨,我说的不是你的专业能力,而是在这个社会生存的基础能力!

以上所有的东西可以规为武功的招式,但如果你想短期就实现目标,我还在说明书的最后留下了一些现成资源的下载链接,包括一些稀缺的资源,保证物有所值。这部分内容可以规为内功,继不继承由你自已决定!

好了,最后跟所有的老者不一样的是:这个老人要问你收取一点点小费,才会把无比珍贵的秘籍交到你手中!

以下是付款链接,付款后你将获取《武林秘籍》的访问密码。随后你将解锁另外一个谋生技能,在工作挣着死工资的同时,该技能也能同时帮你赚另一份钱,终身受用!

http://www.gqylpy.com/get_wlmj_pwd

能在此遇见是我们的缘分,我愿意帮助你,祝你取得成功!

传说中的武林秘籍:http://blog.gqylpy.com/gqy/401/

资料

决策边界(decision boundary)
logistic回归,以及决策边界与回归的区别
吴恩达机器学习笔记16-决策边界(decision boundary)
机器学习中线性模型和非线性的区别
机器学习中线性模型和非线性的区别
怎样区分线性和非线性
线性模型
线性分类器和非线性分类器


机器学习之广义线性模型
广义线性模型到底是个什么鬼?| 协和八
逻辑回归(logistics regression)
解释logistic回归为什么要使用sigmoid函数
LG为什么用sigmoid函数


《深度学习导论及案例分析》一2.15通用逼近定理
大意就是:隐藏节点只要足够多,就能逼近任一函数


机器学习(二):k近邻法(kNN)
机器学习:K-近邻算法(KNN)


几种距离度量方法比较

闵氏距离的缺点:
(1)将各个分量的量纲(scale),也就是“单位”相同的看待了;
(2)未考虑各个分量的分布(期望,方差等)可能是不同的。

距离和相似度度量方法


独立同分布
为什么机器学习训练时总是要求样本是独立同分布?

  • 番外
不是需要独立同分布,而是因为如果不是独立同分布,概率模型就太复杂了,
复杂到完全没法计算,所以只能姑且用独立同分布建模了。

【机器学习】线性回归原理推导与算法描述


逻辑回归推导
逻辑回归(Logistic Regression)推导
logistic回归的数学推导
一、线性回归和逻辑回归
logistic回归,以及决策边界与回归的区别
逻辑回归与线性回归的区别
【机器学习】Logistic Regression 的前世今生(理论篇)
【面试】逻辑回归(***)
线性回归、逻辑回归(LR)(***)
逻辑回归(LR)个人学习总结篇


机器学习中的损失函数(凸函数辨别)
深度学习/机器学习入门基础数学知识整理(三):凸优化,Hessian,牛顿法
在梯度下降法中,为什么梯度的负方向是函数下降最快的方向


【聚类】五种主要聚类算法
聚类算法及其评估指标


机器学习实战(三)——决策树
机器学习之-常见决策树算法(ID3、C4.5、CART)

信息增益就是分类前的熵 - 分类后的熵

信息增益会偏向取值较多的特征
信息增益率使用信息增益除以分支结构的熵

决策树算法——机器学习(理论+图解+python代码)
CART树理解(一)
树类算法之—决策树Cart树Gini系数就算原理

基尼指数省略了对数计算,运算量比较小

而且CART树约定为二叉树

AdaBoost原理详解
机器学习(四)— 从gbdt到xgboost
详述Xgboost原理


SVM通常用对偶问题来求解,这样的好处有两个:
1、变量只有N个(N为训练集中的样本个数),
原始问题中的变量数量与样本点的特征个数相同,当样本特征非常多时,求解难度较大。
2、可以方便地引入核函数,求解非线性SVM。

ROC曲线和PR(Precision-Recall)曲线的联系


详解 | Dropout为何能防止过拟合?


(BN)批量归一化全面解析
Batch Normalization(批量归一化)
深度学习(六)——BN算法(Batch Normalization)的原理和作用

但是,随着网络层次加深参数对分布的影响不定。
导致网络每层间以及不同迭代的相同相同层的输入分布发生改变,
导致网络需要重新适应新的分布,迫使我们降低学习率降低影响

神经网络的归一化(Normalization)
神经网络中normalization方法小结
神经网络算法Batch Normalization的分析与展望 | 大牛讲堂
神经网络为什么要归一化
理解BN(Batch Normalization)
关于BN(Batch Normalization)的一些归纳和总结
BN算法优势
【深度学习】深入理解Batch Normalization批标准化 郭耀华’s Blog
深度学习 — 优化入门四(Batch Normalization(批量归一化)一)

数据同分布中的数据指的是样本向量,数学上对应的是联合分布函数
大家属于同一个分布函数

不使用BN,非线性变化几次后特征向量的分布分布似乎发生了变化
BN的具体操作是,对一个批次中每条数据的对应位置进行标准归一化

向量服从同一分布这个到底想表示什么

BN(Batch Normalization) 原理与使用过程详解
统计机器学习中的一个经典假设是“源空间(source domain)和目标空间(target domain)的数据分布(distribution)是一致的

可是这里Google仅仅说“通过mini-batch来规范化某些层/所有层的输入,
从而可以固定每层输入信号的均值与方差”就可以解决问题。
如果covariate shift可以用这么简单的方法解决,那前人对其的研究也真真是白做了。
此外,试想,均值方差一致的分布就是同样的分布吗?

深度学习—BN的理解(一)

网络训练过程中使得每一层神经网络的输入保持相同分布的。

它位于X=WU+B激活值获得之后,非线性函数变换之前
而Normalization则是把分布强行拉回到均值为0方差为1的标准正态分布,
使得激活输入值落在非线性函数对输入比较敏感的区域,
这样输入的小变化就会导致损失函数较大的变化,避免梯度消失问题产生,加速收敛

BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。

ReLU和BN层简析

BN层的出现,主要是为了解决机器学习IID问题,即训练集和测试集保持独立同分布。
如果输入的分布不能保持稳定,那么训练就会很难收敛.

为什么conv+bn+relu是有效的?

第一,relu激活函数不是一到负数就成为dead cell的,如果是较大的负数,比如-0.5,-0.1这样子的,还是可以从dead变为active的,因为其他参数的调整,可以使输入发生变化。
只有较大的梯度,将这个神经元的激活值变为比较小的负数,比如-1000,才会形成dead relu。

第二,bn在relu之前还是之后貌似结果差别不大,翻了下原始论文,猜测作者应该是先对sigmoid做了实验,把BN放在了之前,然后relu就直接follow之前的做法了。

第三,需要理解bn的作用在于通过平滑隐藏层输入的分布,帮助随机梯度下降的进行,缓解随机梯度下降梯度衰减的情况。从这个角度来说,前和后应该是都能起到作用的。

神经网络细节

每个神经元增加两个调节参数(scale和shift),这两个参数是通过训练来学习到的,用来对变换后的激活反变换,
使得网络表达能力增强,即对变换后的激活进行如下的scale和shift操作

对这个scale和shift不太理解

深度学习中 Batch Normalization为什么效果好?知乎

BN所做的就是解决这个梯度传播的问题,因为BN作用抹去了w的scale影响

Batch Normalization原理及其TensorFlow实现——为了减少深度神经网络中的internal covariate shift,论文中提出了Batch Normalization算法,首先是对”每一层“的输入做一个Batch Normalization 变换(五星)

Internal Covariate Shift与Normalization(五星)

而机器学习中有个很重要的假设:IID独立同分布假设,
就是假设训练数据和测试数据是满足相同分布的,
这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障。
那么,细化到神经网络的每一层间,每轮训练时分布都是不一致,
相对的训练效果就得不到保障,所以称为层间的covariate shift。

在深度神经网络中,由于第一层参数的改变,导致了传递给第二层的输入的分布也会发生改变,
也就是说在更新参数的过程中,无形中发生了internal covariate shift
  • BN的作用是啥
保证每一层输入数据同分布,同时解决了梯度消失与梯度爆炸问题

每一层输入数据同分布是使用训练集训练模型有效的前提
如果不使用BN,不断的非线性变化使得不同样本对每一层的输入数据发生了层间Covariate Shift
使用BN后强制使每一层的输入分布回到均值0方差1的分布中,类似数据预处理步骤中的标准归一化
(举例理解,不同老师改同一份试卷得分不同)

同时BN的过程中增加两个调节参数(scale和shift), 抹去了w的scale影响,从而避免了梯度消失与梯度爆炸

矩阵向量求导(Vector derivation)


常见的几种最优化方法(梯度下降法、牛顿法、拟牛顿法、共轭梯度法等)

梯度下降法的缺点:
  靠近极小值时收敛速度减慢
  
批量梯度下降:
每迭代一步,都要用到训练集所有的数据,如果m很大,那么可想而知这种方法的迭代速度会相当的慢

随机梯度下降:
SGD伴随的一个问题是噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向,
可能会“之字形”地下降

梯度下降法的推导(非常详细、易懂的推导)

为什么参数这样更新能使loss降低
为什么局部下降最快的方向就是梯度的负方向呢

一阶泰勒展开式的推导过程

关于梯度下降法和牛顿法的数学推导
梯度下降法和牛顿法的总结与比较

利用牛顿法求解目标函数的最小值其实是转化成求使目标函数的一阶导为0的参数值。
这一转换的理论依据是,函数的极值点处的一阶导数为0.

牛顿法与Hessian矩阵

牛顿法 主要有两方面的应用:
1. 求方程的根;
2. 求解最优化方法;

要解决 f′(x) = 0 的问题

最后:
xn+1 = xn - f'(xn) / f'′(xn)

深度学习——优化器算法Optimizer详解(BGD、SGD、MBGD、Momentum、NAG、Adagrad、Adadelta、RMSprop、Adam)
什么是指数加权平均、偏差修正?
指数加权移动平均(Exponential Weighted Moving Average)


衡量机器学习模型的三大指标:准确率、精度和召回率。

分布不平衡数据集
---------------------------
召回率=真正例/(真正例 + 假反例) 
精度=真正例/(真正例 + 假正例)


分割线

  • 为什么logistic回归的要用sigmoid函数?优缺点?
logistic是基于Bernoulli分布的假设,而Bernoulli分布的指数族的形式就是1/(1+exp(-z))

优点:
1.数据压缩能力,将数据规约在[0,1]之间
2.导数形式优秀,方便计算

缺点:
1.容易梯度消失,x在两端时的梯度趋近于0
2.非0中心化,在神经网络算法等情况下,造成反向传播时权重的全正全负的情况。

什么是伯努利分布
为什么logistics服从伯努利分布
指数族怎么解释

  • 对比牛顿法、梯度下降法的关系


分割线

最全算法工程师面试题目整理(一)

1.  为什么logistic回归的要用sigmoid函数?优缺点?
2. 对比牛顿法、梯度下降法的关系
3. 常见的正则化有是么,有什么作用,为什么l1是会把feature压缩到0而l2做不到?
4. 分类模型如何选择?如何判断效果?如何计算AUC?你最熟悉的ensemble Classification model是什么?

2018年BAT面试经验分享(计算机视觉算法岗

场景题:在直播网站(YY或斗鱼等)上面有一个在唱歌的女主播,
突然唱歌的时候就把衣服脱光了,你要怎么用算法检测出来这个事情,然后把这直播间关闭了。
(答:主要从动作分析、场景分析、文字分析、语音分析这四个方面来回答)。

计算机视觉与深度学习算法工程师面试题整理

1. 在梯度下降法中,为什么梯度的负方向是函数下降最快的方向?
    一阶泰勒展开的参数更新可知
    
2.  为什么引入Relu呢?
    
3.  bias的作用
    y = Wx   + b 才是完整的决策边界(或超平面)方程,才能囊括所有可能情况
    如果没有b,就是默认b =0,
    直观上就是决策边界(或超平面)必须经过原点

计算机视觉算法面试整理

直方图均衡化

计算机视觉实习面试经历

面试官很看重深度学习项目经历,因为我有一段用tensorflow进行人脸检测的实习经历,
所以被问人脸检测现状、
当前比较好的人脸检测的深度学习模型及其比较、如何获取数据集、检测效果。。。
又问了fast r-cnn具体实现,以及r-cnn发展历程--我简单介绍了fast r-cnn流程,
很可惜这段实习当时比较水,所以坦诚不太会。

计算机视觉相关面经总结

【计算机视觉算法岗面经】“吐血”整理:2019秋招资料


特征工程

特征归一化
特征归一化,意义、方法、使用场景
检验样本是否服从正态分布,处理偏态分布
数据预处理——样本分布(正态分布、偏态分布)
如何进行数据变换(转)
通俗易懂理解特征归一化对梯度下降算法的重要性

扁的那一个方向,是数域较大的方向

需要梯度下降求解的模型需要归一化处理(比如线性回归,逻辑回归等)
对于决策树模型就不需要归一化处理了

归一化的好处:
消除数据特征之间量纲的影响,
在梯度下降中的好处是参数更新的更加平稳

数据预处理:独热编码(One-Hot Encoding)和 LabelEncoder标签编码

通常用独热编码处理,类别间不具有大小关系的特征
如果按序号编码,转换后类别间产生了大小关系,相应的距离计算不合理

  • 图片不足时的处理方法(训练数据不足的处理方法)
* 基于数据,主要通过数据增强
* 使用生成模型,比如生成对抗网络?
* 基于模型,简化模型,添加正则项
* fine-tune模型

损失函数

机器学习者都应该知道的五种损失函数

目标检测

【更新中】目标检测——梳理,准备面试
计算机视觉目标检测算法综述
Fast R-CNN(理解)

传统目标检测
传统目标检测三步曲:
1. 区域选择(滑动窗口,SelectiveSearch)
2. 特征提取(SIFI,HOG)
3. 分类器训练(SVM,Adaboost)
  • 传统目标检测流程(传统目标检测该怎么做)
第一步:训练集构造
(构建正负例样本)
正例样本:GT

负例样本:候选区域与GT重叠度在20%-50%之间,
而且与已有的负例样本的IOU少于70%

第二步:提取每个正负例样本的特征

第三步:训练分类器

第四步:把训练时的FP收集起来,对上一步训练好的模型进行二次训练

预测流程:
1.获取候选框
2.提取候选框的特征向量
3.将特征向量输入到分类器中
4.排序,过滤
    a.对每个候选框根据获得的概率值进行降序排序
    b.概率值小于0.5的直接过滤
    c.剩下的候选框按顺序从第一个开始计算与后面候选框的IOU,保留IOU小于30%的
    
最后剩下的就是目标区域
补充: 手工设计的特征鲁棒性比较差,只是一些表层特征
R - CNN
1.候选区域通过SelectiveSearch生成
2.使用CNN进行特征提取
  • R - CNN训练流程
1.使用SelectiveSearch生成2000个候选框(构建正负例样本)
2.候选框缩放到固定尺寸(eg:227×227)
3.使用CNN提取候选框特征
4.分类训练:将特征向量输入到SVM分类器
  回归训练:将特征向量输入到全连接网络进行Bounding Box回归
补充:这里分类器用SVM代替,为什么不用softmax
-------------------------------------------------------
问题:
1.算力冗余
先生成候选区域,再对区域进行卷积,这里有两个问题:
其一是候选区域会有一定程度的重叠,对相同区域进行重复卷积;
其二是每个区域进行新的卷积需要新的存储空间。

2.图片缩放
候选区域中的图像输入CNN(卷积层并不要求输入图像的尺寸固定,只有第一个全连接层需要确定输入维度,
因为它和前一层之间的权重矩阵是固定大小的,其他的全连接层也不要求图像的尺寸固定)中需要固定尺寸(227 * 227),
会造成物体形变,导致检测性能下降。

3.训练测试不简洁
候选区域生成、特征提取、分类、回归都是分开操作,
中间数据还需要单独保存。
SPP Net
  • 候选框特征向量提取方式的改进
  • 通过SPP解决固定输入尺寸的限制
1.并不是先裁剪候选框,再对候选框进行卷积提取特征,
而是先对原图卷积,再从特征图中获取Proposal区域对应的特征图像
将 R - CNN 的多次卷积简化为一次卷积(减少计算量,减少存储量)

2.将特征图像输入SPP层得到固定长度的特征向量
  • SPP具体做法
对输入的特征图进行三种尺度的切分:4×4,2×2,1×1
对切分出来的每个小块进行max pooling下采样
将结果排列成一列向量输入到全连接中
Fast R - CNN
...

使用 smoothL1 loss的好处

数据结构与算法

详解什么是尾递归(通俗易懂,示例讲解)
递归与尾递归总结

什么场景适合尾递归

原文: http://blog.gqylpy.com/gqy/480

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!