一、机器学习

1. 基本概念

1)机器学习的分类

  • 有监督学习、无监督学习、半监督学习

    • 有监督学习:数据做标注,模型同时接受输入+输出,主要包括回归、分类问题
    • 无监督学习:数据不做标注,模型只接收输入,主要包括聚类
    • 半监督学习:有监督、无监督学习结合
  • 基于模型的学习、基于实例的学习

  • 批量学习、增量学习

2)机器学习的基本问题

  • 回归问题:预测结果是连续的
  • 分类问题:预测结果是离散的
  • 聚类问题:无监督学习,根据样本的相似程度,将相似度高的划分到同一个聚簇中
  • 降维问题:缩小数据的维度、规模

3)机器学习的一般过程

  • 数据收集 → 数据清洗 → 选择模型 → 训练 → 评估 → 测试 → 应用及维护

2. 数据预处理

1)标准化:将样本处理为每列均值为0、标准差为1

2)范围缩放:将每列最小值转换为0,最大值转换为1

3)归一化:将数据转换为0~1之间的百分比(按行)

4)二值化:将数据转换为0/1两个值

5)独热编码:将数据转换为一个1和一串0

6)标签编码:字符串转换为数字

3. 回归问题

1)线性回归

  • 线性模型:$y = w^T x + b$​

  • 线性回归:利用线性模型做回归(样本基本呈线性分布)

  • 损失函数:度量预测值(模型计算)、真实值(样本)之间的差异

  • 梯度下降法:沿着损失函数梯度相反的方向,对模型参数进行优化
    $$
    w_i = w_i + \Delta w_i \
    \Delta W_i = - \eta \frac{\partial E}{\partial w_i}
    $$

  • 两个变种

    • Lasso回归:在标准线性回归损失函数上增加L1正则项
    • 岭回归:在标准线性回归损失函数上增加L2正则项

2)多项式回归

  • 多项式回归:引入高次项,用于样本呈非线性分布情况
  • 多项式回归系数是线性的,可以理解为线性回归的扩展
  • 欠拟合与过拟合
    • 欠拟合:拟合程度不够,模型没有学习到数据的真实变化规律,表现为训练集、测试集下准确率都比较低。解决方法:增加模型复杂度、增加特征
    • 过拟合:模型过分拟合与训练样本,导致泛化能力不足,表现为在训练集准确率较高、测试集下准确率较低。解决方法:增加样本数量、简化模型、减少特征数量

3)决策树回归

见分类部分

4)评价指标

  • R2系数

  • 均方差

4. 分类问题

1)逻辑回归

  • 定义:二分类问题,先利用回归模型预测一个连续值,然后通过逻辑函数离散化
  • 逻辑函数(sigmoid):$y = \frac {1}{1+e^{-x}}$​
  • 损失函数:交叉熵
  • 二分类模型实现多分类:多个二分类模型

2)决策树

  • 定义:利用”同因同果”原理,构建一个树状结构,将具有相同属性的样本划分到同一个子节点下,利用投票法实现分类,求均值实现回归
  • 信息熵:描述一组数据混乱或有序的程度
  • 特征选取
    • 信息增益:划分子节点前的信息熵、划分后的信息熵的差值
    • 增益率:信息增益 / 固有熵
    • 基尼系数
  • 决策树的枝剪:预枝剪,后枝剪
  • 集成学习
    • 强关联:Boosting,AdaBoosting
    • 弱关联:Bagging,随机森林

3)支持向量机

  • 定义:二分类模型,寻找一个最优线性分类边界,使得支持向量(离分类边界最近的样本)到分类边界间隔最大化
  • 分类边界的要求:正确性、公平性、安全性、简单性
  • 线性可分、线性不可分
  • 核函数:将线性不可分问题转换为高纬度空间下的线性可分
    • 线性核函数
    • 多项式核函数
    • 高斯核函数

4)朴素贝叶斯

  • 贝叶斯定理

$$
P(A|B) = \frac{P(A)P(B|A)}{P(B)}
$$

  • 朴素贝叶斯:假设特征是独立的,利用贝叶斯定理计算属于每个类别的概率

5. 聚类问题

1)定义:无监督学习,根据样本的相似度,将其划分放到不同的聚簇,同一个聚簇样本相似度较高,不同的聚簇样本相似度较低

2)样本相似度的度量:距离

  • 欧氏距离
  • 曼哈顿距离
  • 切比雪夫距离
  • 闵氏距离

3)聚类的划分

  • 基于原型(或基于划分)的聚类:如k-means

  • 基于密度的聚类:DBSCAN

  • 基于层次的聚类:凝聚层次

  • 聚类算法的比较

    比较项 K-Means DBSCAN 凝聚层次
    类别 基于原型 基于密度 基于层次
    聚类中心
    是否提前设置K
    噪声是否敏感 敏感 不敏感 不敏感
  • 评估指标:轮廓系数

6. 模型评估与优化

1)分类问题性能度量

  • 正确率(Accuracy): 分类正确数量 / 总样本数量
  • 错误率(Error rate):分类错误数量 / 总样本数量
  • 查准率(Precision):TP / (TP + FP)
  • 召回率(Recall):TP / (TP + FN)
  • F1:2 * 查准率 * 召回率 / (查准率 + 召回率)
  • 混淆矩阵

2)交叉验证:将数据集划分成K个折叠,每次以其中一个折叠作为测试集,其它作为训练集,这样相当于获得了K个不同数据集。主要用于样本较少的情况

3)学习曲线、验证曲线

  • 学习曲线:比较不同规模训练数据对模型影响
  • 验证曲线:比较不同参数对模型影响

4)超参数的选择

  • 超参数:不是通过学习得来的,而是通过经验、实验对比确定
    • 决策树深度、叶子节点最少样本数量
    • 正则强度
    • 正态分布中期望值、标准差
    • 随机森林树的棵树
    • 学习率
  • 网格搜索:将所有取值进行穷举组合,选出最优的组合
  • 随机搜索:随机产生值,再进行穷举组合

二、深度学习

1. 感知机与神经网络

1)感知机:神经元,接收多个输入$x_1, x_2, …, x_n$​​, 根权重矩阵相乘,产生输入。可以作为分类器、回归器,解决线性问题;更多的神经元组成神经网络

2)神经网络:多个神经元组成的层状、有向五环结构。通用近似定理证明,神经网络只需要一个隐藏层,该隐藏层包含足够多的神经元,在激活函数作用下,能够以任意精度模拟任意连续型函数

2. 激活函数

1)作用:将神经网络输出由线性转换为非线性

2)常用激活函数

  • sigmoid:平滑、连续;缺点是梯度消失
  • tanh:平滑、连续;缺点是梯度消失;根sigmoid相比收敛速度跟快
  • relu:计算简单,避免了梯度过大、过小的问题
  • softmax:用于神经网络输出层,将神经网络输出层的数值转换为一组概率

3. 损失函数与梯度下降

1)损失函数:度量真实值、预测值之间的差异,用来评估模型的优劣

  • 均方差:回归问题使用
  • 交叉熵:分类问题使用

2)梯度下降:沿着梯度负方向逐步调整每个模型参数

4. 反向传播算法

1)作用:深度神经网络中求隐藏层的参数梯度

2)链式求导法则

5. 卷积神经网络

1)卷积:两个函数在某个维度上的加权叠加

2)卷积神经网络:加入了卷积操作的神经网络,一般结构:

输入 –> 卷积/激活/池化 –> …… –> 全连接

3)卷积神经网络各层的作用

  • 卷积层:提取特征(主要作用)、降维
  • 激活层:激活运算
  • 池化层:降维,提升泛化能力。池化类型:max, average
  • 全连接:分类器
  • dropout:防止过拟合
  • Batch Normal:防止梯度消失、防止过拟合、增加模型稳定性、加快收敛速度

4)经典卷积神经网络:LeNet,AlexNet,VGG,GoogLeNet,ResNet

三、计算机视觉

1. 数字图像基础

1)成像原理

2)图像存储方式:灰度图像单通道矩阵,彩色图像多通道矩阵

3)色彩空间:RGB, HSV, YUV……

4)灰度级:像素灰度值取值范围,当前采用的是256个灰度级

5)色彩变换

  • 灰度化:彩色图像转灰度图像,平均值法、最大值法、加权平均值等
  • 二值化:将灰度图像转换为只包含0/255两个值
  • 色彩通道操作
  • 灰度直方图、直方图均衡化处理

6)形态变换

  • 仿射变换:简单线性变换,主要包括旋转、平移、镜像
  • 透视变换
  • 缩放:插值法(最邻近插值、双线性插值)
  • 裁减
  • 形态学梯度:腐蚀、膨胀、开运算、闭运算

7)梯度相关

  • 模板运输:包括模板卷积、模板排序。利用不同的模板运算,能实现图像的模糊、锐化、边沿提取等等功能
  • 模糊处理:中值滤波、均值滤波、高斯滤波
  • 边沿提取:Sobel,拉普拉斯变换,Canny算法
  • 轮廓查找、绘制

2. 深度学习图像识别

1)图像分类

  • 过程:原图 –> 特征提取 –> 分类模型
  • 分类模型:LeNet,AlexNet,VGG,GoogLeNet,ResNet

2)目标检测

  • 原理:局部分类 + 回归(定位)
  • 两阶段检测、一阶段检测
    • 两阶段:先产生候选区,再做分类和回归。R-CNN系列
    • 一阶段:直接分类和回归。YOLO系列、SSD
  • 候选区域产生方式
    • 滑动窗口法:检测精度高,效率极低
    • Selective Search算法:图像算法,计算相邻区域相似度
    • RPN网络:特征图上产生候选区域预测
  • IOU:真实边框、预测边框交集与并集比率
  • 多尺度检测与特征融合:在大小不同的特征图上进行检测;特征融合指将大小不同的特征图融合在一起
  • R-CNN系列、YOLO系列

3)OCR专题

  • OCR模型包含两部分:文字检测、文字识别
  • 检测模型
    • CTPN模型:适合做水平文字检测
    • SegLink:适合做带角度文字检测
  • 识别模型:CRNN + CTC

4)人脸检测与人脸识别

  • 人脸检测:MTCNN
  • 人脸识别:孪生网络、三元神经网络、DeepFace、FaceNet

5)图像分割

  • 原理:对图片中每个像素进行分类
  • 分割粒度:语义分割、实例分割、全景分割
  • 评价指标
    • 像素精度
    • 平均像素精度
    • 平均交并比
  • 常用模型
    • FCN
    • U-Net
    • Mask R-CNN
    • DeepLab系列:空洞卷积、条件随机场、多尺度池化……

四、关于项目的问题

1)如何构建数据集

  • 收集/采集数据
  • 数据清洗
  • 分门别类存放、标注

2)数据从哪里来?

  • 历史交易发生过的数据(价值最高)
  • 采集(时间、成本较高)
  • 购买(很多数据买不到)
  • 爬虫(合规性)
  • 公共数据集(价值不高)

3)数据量究竟多大?

  • 深度学习:数据量越多越好(单个类别达百数量级)

4)数据不够如何处理?

  • 数据增强
  • 选择在少量样本下性能不错的模型(SVM,U-Net)

5)样本极度不均衡如何处理?

  • 对极少量样本进行过采样(直接复制)

6)选用的模型是什么?为什么?

  • 根据实际问题以及问题的难以程度,首选现有的、经典的、成熟的模型。简单的问题选择简单模型,复杂的问题选择复杂模型
  • 如果不确定使用哪个模型,通过实验对比择优选择
  • 在有些情况下,可以采用多个模型配合使用,发挥各自特长

7)什么情况下选择纯图像,什么情况下选择深度学习?

  • 纯图像:不需要理解图像内容;问题简单、图像变化较小、干扰较少
  • 深度学习:需要理解图像内容和场景;问题复杂、图像变化较大、干扰较多、需要模型有较强的泛化能力

8)数据如何标注?谁来标注?

  • 标注:分类问题、目标检测、分割问题标注方式不一样
  • 谁来标注
    • 大企业:专门标注人员或团队
    • 中小企业:开发人员、技术团队自己标注
    • 有些数据需要专业知识才能进行标注

9)模型训练时间

  • 估算
  • 实际项目中采用增量训练

10)为什么不采用xxx模型?

  • 效果
  • 最好说出模型的特点

11)模型如何部署、使用?

  • 部署方式:服务器部署、客户端部署、嵌入式设备部署
  • 封装成网络服务、封装成类/函数供用户调用

12)准确率是多少?

  • 实际项目中一般达到95%以上

13)关于项目的细节

  • 什么型号的GPU?
  • 什么型号的工业相机?相机分辨率是多少?
  • 相机如何安装?每秒钟多少帧?
  • 项目几个人?如何分工?

14)简历中项目需要描述清楚的问题

  • 需求:用在哪里?谁来用?解决什么问题?
  • 数据集:来源、数量、预处理手段
  • 模型选择、优化过程
  • 过拟合、欠拟合现象?处理方式
  • 效果

五、项目示例

1)芯片质检

  • 样本:芯片高清图像
  • 技术路线:OpenCV图像技术
  • 技术点:灰度处理、二值化、膨胀、轮廓检测、轮廓实心填充

2)胶囊质检

  • 样本:胶囊高清图像
  • 技术路线:OpenCV图像技术
  • 技术点:灰度处理、二值化、膨胀、模糊、霍夫变换、像素计算、轮廓查找/绘制/面积周长计算

3)瓷砖瑕疵检测

  • 样本:1000多个瓷砖样本,包含7个类别(正常、空洞、裂缝、缺块、色板、刮痕、其它)
  • 预处理:旋转、镜像增强后,达到4万个以上样本
  • 模型:普通CNN
  • 关键参数:输入图像256*256,学习率0.0001~0.00001
  • 准确率:测试集下达到97%以上

4)目标检测项目案例

  • 判断腰椎间盘突出
  • 检测润滑油企业储油罐盖子处于开/关状态
  • 检测输油管道关键节点是否漏油
  • 检测高速公路上有没有滚石、滑坡、泥石流
  • 检测高速公路隧道有没有裂缝、渗水
  • 农作物、林地害虫检测
  • 消防起火点检测(冒烟、起火)
  • 发电厂冒烟、起火点检测
  • 居民楼电动车入户检测
  • 安检系统:检测违禁物品

5)图像分割

  • 工业产品瑕疵区域检测与分割
  • 检测道路病害(裂缝、龟裂、坑槽)