文章目录

  • 1、MLP的BP过程
  • 2、maxpool层BP怎么做的
    • 2.1 **mean pooling**
    • 2.2 max pooling
  • 3、opencv遍历像素的方式,讲两种?
  • 4、传统图像处理有了解过吗,比如去噪 特征提取
  • 5、问在linux下写过代码吗? 问用了什么软件工具
  • 6、LDA(狄利克雷分布)
  • 7、PR曲线、ROC曲线
    • 7.1、查准率、查全率、F1
    • 7.2、ROC和AUC
    • 7.3、偏差和方差
  • 8、特征工程
    • 8.1、特征工程是什么?
  • 9、数据预处理的方法
  • 10、特征选择的方法有哪些
  • 11、写K-means、GMM的公式
    • 11.1 k-means
    • 11.2 GMM
  • 12、CNN与RNN的区别
  • 13、你所知道的距离度量方式、损失函数
    • 13.1 距离度量
    • 13.2 损失函数

1、MLP的BP过程

MLP(multilayer perceptron)多层神经网络
1、单层神经网络的BP算法
反向误差传播

delta就是误差的反向传播,用来更新网络参数(w,b)
使得损失函数向最小值靠近
2、深层前向、后向

3、MLP(multilayer perceptron)的BP

  • 无监督预训练 RBM
  • 有监督微调 BP

2、maxpool层BP怎么做的

2.1 mean pooling

mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变,还是比较理解的

2.2 max pooling

max pooling也要满足梯度之和不变的原则,max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0。

  • Max Pooling比较有意思,forward的时候需要记录 每个窗口内部最大元素的位置
  • 然后bp的时候,对于窗口内最大元素的gradient是1,否则是0。原理和ReLu是一样的。

3、opencv遍历像素的方式,讲两种?

(1). C操作符[] (指针方式访问)
(2). 迭代器iterator
(3). 动态地址计算

像素遍历方式在速度上不同,用C操作符[]是最快的访问方式

at()函数和行首指针

4、传统图像处理有了解过吗,比如去噪 特征提取

1、图像去噪

图像去噪是指减少数字图像中噪声的过程称为图像去噪。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。

噪声是图象干扰的重要原因。一幅图象在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。

去除图像噪声的方法简介

  • 均值滤波器:采用邻域平均法
  • 自适应维纳滤波器
  • 中值滤波器
  • 小波去噪:(1)对图象信号进行小波分解 (2)对经过层次分解后的高频系数进行阈值量化 (3)利用二维小波重构图象信号

2、图像特征提取

  • HOG特征(方向梯度直方图)
  • LBP特征(局部二值模式)(编码:中心像素做阈值)
  • Haar-like特征

5、问在linux下写过代码吗? 问用了什么软件工具

写过

  • 一般写Python,简单的C/C++程序用的是sublime,然后通过终端去运行,调试
  • 写Linux界面程序的话用QT软件比较多
  • 写Linux下的驱动程序,用的是交差编译的环境,是在win下面开发,然后将工程通过网络传输到Linux机子上去,然后通过终端运行命令进行编译和执行。驱动程序编写使用VS(win)

6、LDA(狄利克雷分布)

Dirichlet Distribution(狄利克雷分布)的定义和性质

隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA)是由 David M. Blei、Andrew Y. Ng、Michael I. Jordan 在2003年提出的,是一种词袋模型,它认为文档是一组词构成的集合,词与词之间是无序的。一篇文档可以包含多个主题,文档中的每个词都是由某个主题生成的,LDA给出文档属于每个主题的概率分布,同时给出每个主题上词的概率分布。LDA是一种无监督学习,在文本主题识别、文本分类、文本相似度计算和文章相似推荐等方面都有应用。

multinomial distribution(多项式分布)

LDA中,多项式分布, 和狄利克雷分布的 形式一致,所以称为共轭

共轭分布:共轭先验分布,在贝叶斯统计中,如果后验分布与先验分布属于同类,则先验分布与后验分布被称为共轭分布,而先验分布被称为似然函数的共轭先验。

7、PR曲线、ROC曲线

PR曲线、ROC曲线、AUC、Accuracy

7.1、查准率、查全率、F1

对于二分类问题,可将样例根据其真实类别与学习器预测类别的组合划分为真正例(TP),假反例(FN),假正例(FP),真反例(TN),具体分类结果如下

查准率P和查全率R分别定义为:

查准率关心的是”预测出正例的正确率”即从正反例子中挑选出正例的问题。
查全率关心的是”预测出正例的保证性”即从正例中挑选出正例的问题。

这两者是一对矛盾的度量,查准率可以认为是”宁缺毋滥”,适合对准确率要求高的应用,例如商品推荐,网页检索等。
查全率可以认为是”宁错杀一百,不放过1个”,适合类似于检查走私、逃犯信息等。

下图为查准率-查全率曲线(P-R图)

若一个学习器的P-R曲线被另一个学习器完全”包住”,则后者的性能优于前者。当存在交叉时,可以计算曲线围住面积,但比较麻烦,平衡点(查准率=查全率,BEP)是一种度量方式。

但BEP还是过于简化了些,更常用的是F1和Fp度量,它们分别是查准率和查全率的调和平均和加权调和平均。定义如下

7.2、ROC和AUC

很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值分为正类,否则为反类,因此分类过程可以看作选取一个截断点。

不同任务中,可以选择不同截断点,若更注重”查准率”,应选择排序中靠前位置进行截断,反之若注重”查全率”,则选择靠后位置截断。因此排序本身质量的好坏,可以直接导致学习器不同泛化性能好坏,ROC曲线则是从这个角度出发来研究学习器的工具。

曲线的坐标分别为真正例率(TPR)和假正例率(FPR),定义如下

下图为ROC曲线示意图,因现实任务中通常利用有限个测试样例来绘制ROC图,因此应为无法产生光滑曲线,如右图所示。

计算曲线围住的面积(AUC)来评价性能优劣

7.3、偏差和方差

泛化误差可以分解为偏差、方差与噪声之和

偏差度量了学习算法的期望预测和真实结果偏离程度。

方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。

噪声可以认为数据自身的波动性,表达了目前任何学习算法所能达到泛化误差的下限。

偏差大说明欠拟合,方差大说明过拟合。

8、特征工程

8.1、特征工程是什么?

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。通过总结和归纳,人们认为特征工程包括以下方面:

特征处理是特征工程的核心部分,sklearn提供了较为完整的特征处理方法,包括数据预处理,特征选择,降维等。首次接触到sklearn,通常会被其丰富且方便的算法模型库吸引,但是这里介绍的特征处理库也十分强大!

9、数据预处理的方法

我们使用sklearn中的preproccessing库来进行数据预处理

通过特征提取,我们能得到未经处理的特征,这时的特征可能有以下问题:

  • 不属于同一量纲
  • 信息冗余
  • 定性特征不能直接使用
  • 存在缺失值
  • 信息利用率低

10、特征选择的方法有哪些

根据特征选择的形式又可以将特征选择方法分为3种:

  • Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
  • Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。(每次增加或者减少一维特征,观察模型的结果从而决定是否添加或删除该特征)
  • Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。(通过最终训练好的模型的参数来选择特征,LASSO回归,RF模型等)

我们使用sklearn中的feature_selection库来进行特征选择。

11、写K-means、GMM的公式

11.1 k-means

11.2 GMM

12、CNN与RNN的区别

在普通的全连接网络或CNN中,每层神经元的信号只能向上一层传播,样本的处理在各个时刻独立,因此又被成为前向神经网络(Feed-forward Neural Networks)。而在RNN中,神经元的输出可以在下一个时间戳直接作用到自身,即第i层神经元在m时刻的输入,除了(i-1)层神经元在该时刻的输出外,还包括其自身在(m-1)时刻的输出!表示成图就是这样的:

我们可以看到在隐含层节点之间增加了互连。为了分析方便,我们常将RNN在时间上进行展开,得到如图6所示的结构:

13、你所知道的距离度量方式、损失函数

13.1 距离度量

  • 距离函数种类:欧式距离、曼哈顿距离、明式距离(闵可夫斯基距离)、马氏距离、切比雪夫距离、标准化欧式距离、汉明距离、夹角余弦等
  • 常用距离函数:欧式距离、马氏距离、曼哈顿距离、明式距离

1.欧式距离
欧式距离是最容易直观理解的距离度量方法,我们小学,中学,高中所接触的两个空间中的距离一般都是指的是欧式距离。

2.曼哈顿距离(Manhattan Distance)
两个点在标准坐标系上的绝对轴距总和

3.切比雪夫距离
各坐标数值差的最大值

4.闵可夫斯基距离
闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表述。

5.标准化欧氏距离
定义: 标准化欧氏距离是针对欧氏距离的缺点而作的一种改进。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都**“标准化”**到均值、方差相等。

6.马氏距离
**概念:**马氏距离是基于样本分布的一种距离。物理意义就是在规范化的主成分空间中的欧氏距离。所谓规范化的主成分空间就是利用主成分分析对一些数据进行主成分分解。再对所有主成分分解轴做归一化,形成新的坐标轴。由这些坐标轴张成的空间就是规范化的主成分空间。

马氏距离的优点:与量纲无关,排除变量之间的相关性干扰

7.余弦距离

夹角余弦取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。

8.汉明距离
定义:两个等长字符串s1与s2的汉明距离为:将其中一个变为另外一个所需要作的最小字符替换次数。

9.信息熵
以上的距离度量方法度量的皆为两个样本(向量)之间的距离,而信息熵描述的是整个系统内部样本之间的一个距离,或者称之为系统内样本分布的集中程度(一致程度)、分散程度、混乱程度(不一致程度)。系统内样本分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。

13.2 损失函数

  • log对数 损失函数(逻辑回归)
  • 平方损失函数(最小二乘法)
  • 指数损失函数(AdaBoost)
  • Hinge损失函数(SVM)
  • 0-1损失函数
  • 绝对值损失函数

损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。

损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项

1.log对数 损失函数
在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数。

log函数是单调递增的,(凸函数避免局部最优)

在使用梯度下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似

2.平方损失函数(最小二乘法, Ordinary Least Squares)
最小二乘法是线性回归的一种,OLS将问题转化成了一个凸优化问题。

在线性回归中,它假设样本和噪声都服从高斯分布(为什么假设成高斯分布呢?其实这里隐藏了一个小知识点,就是中心极限定理),最后通过极大似然估计(MLE)可以推导出最小二乘式子。

为什么它会选择使用欧式距离作为误差度量呢(即Mean squared error, MSE),主要有以下几个原因:

  • 简单,计算方便;
  • 欧氏距离是一种很好的相似性度量标准;
  • 在不同的表示域变换后特征性质不变

3.指数损失函数(AdaBoost)

4.hinge损失
在机器学习算法中,hinge损失函数和SVM是息息相关的。在线性支持向量机中,最优化问题可以等价于下列式子:

损失函数总结

机器学习问题总结(04)相关推荐

  1. 玩玩机器学习1——ubuntu16.04 64位安装TensorFlow GPU+python3+cuda8.0+cudnn8.0

    如今的机器学习运算大多数都是利用gpu进行,包括很大大型游戏,比特币的开采,都离不开GPU的运算,GPU已成为大型运算能力的主要硬件. 大名鼎鼎的机器学习开源框架,如TensorFlow和Caffe, ...

  2. 《机器学习实战》-04 朴素贝叶斯

    说明: 作业的所有代码都要基于Python3 学习大纲:https://blog.csdn.net/qq_34243930/article/details/84669684 (所有计划均在学习大纲里) ...

  3. 机器学习入门(04)— 神经网络多维数组 NumPy 相乘运算

    1. 多维数组 用 NumPy 构建多维数组代码示例如下: In [1]: import numpy as npIn [2]: A = np.array([1,2,3,4])In [3]: A Out ...

  4. 机器学习-数据集类型04

    # -*- coding: utf-8 -*- from sklearn.datasets import load_irisli = load_iris()print("获取特征值" ...

  5. SLS机器学习最佳实战:批量时序异常检测

    0.文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 SLS机器 ...

  6. SLS机器学习最佳实战:日志聚类+异常告警

    0.文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 SLS机器 ...

  7. SLS机器学习介绍(02):时序聚类建模

    文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 前言 第一篇文 ...

  8. SLS机器学习介绍(05):时间序列预测

    00系列文章目录 0.1 算法原理目录 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规 ...

  9. NLTK01 《NLTK基础教程--用NLTK和Python库构建机器学习应用》

    01 关于NLTK的认知 很多介绍NLP的,都会提到NLTK库.还以为NLTK是多牛逼的必需品.看了之后,感觉NLTK对实际项目,作用不大.很多内容都是从语义.语法方面解决NLP问题的.感觉不太靠谱. ...

  10. SLS机器学习介绍(01):时序统计建模

    文章系列链接 SLS机器学习介绍(01):时序统计建模 SLS机器学习介绍(02):时序聚类建模 SLS机器学习介绍(03):时序异常检测建模 SLS机器学习介绍(04):规则模式挖掘 SLS机器学习 ...

最新文章

  1. vimdiff使用总结
  2. ecshop 删除订单时提示“以下订单无法被移除”的解决办法
  3. android+notepad教程,Android平台应用开发实例:Notepad
  4. 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
  5. CCSpriteBatchNode的使用
  6. dblink传输clob字段
  7. java图形包_java流布局图形包
  8. python sql注入脚本_python辅助sql手工注入猜解数据库案例分析
  9. Android系统(62)---Alarm的机制
  10. 虚拟DOM - React的骨干
  11. 《那些年啊,那些事——一个程序员的奋斗史》九
  12. c++ notes (very basic)
  13. Vue如何使用ECharts
  14. C++ - STL标准库
  15. 天龙八部架设IP配置文件
  16. TCAM路由器查表技术分析
  17. 【脑海烙成了无法泯灭的伤痕】
  18. matlab的exp函数学习
  19. 微信小程序云开发--拼图游戏
  20. 2022-2028全球与中国盲侧辅助(BSA)市场现状及未来发展趋势

热门文章

  1. 可以让你少奋斗十年的工作经验
  2. linux tao环境 安装_Linux安装jdk8及环境变量配置
  3. string 找出所有数字 index_发现规律,解决整数转罗马数字
  4. linux c++ queue 多线程,C++多线程,消息队列用法
  5. 【转】itk、vtk、qt 显示dicom 数据
  6. 【转】ABP源码分析八:Logger集成
  7. 【转】C#中的命名空间namespace全解
  8. 【转】Azure 命令行工具大混战,都是什么,该选哪个?
  9. ASP.NET Core真实管道详解[2]:Server是如何完成针对请求的监听、接收与响应的【上】
  10. Move_base理解