机器学习

概念

对于给定的任务T,在合理的性能度量方案P的前提下,程序可以自主学习任务T经验E;随着提供合适、优质、大量的经验E,程序对于任务T的性能逐步提高

image-20230408212323444

image-20230408212650892

image-20230408212716772

基本概念

  • dataset 数据集
  • instance 示例(没有结果的)/sample 样本(有结果的)
  • attribute 属性/feature 特征
  • classification 分类
  • 连续值 regression 回归
  • 离散值
  • 监督学习
    • 分类
    • 回归
  • 无监督学习
    • 聚类(类内差距最小化,类间差距最大化)
  • 输入空间x → 输出空间y 映射f y=f(x)
  • 泛化:训练模型适应新样本的能力
  • 学习过程:在所以假设(hypothesis)组成的空间中进行搜索
  • 归纳偏好:算法在学习过程中对某种类型假设的偏好
  • 奥卡姆剃刀原理:若有多个假设与观察一致,则选最简单的那个
  • 语义分割:图片中像素点分类从而进行物品的分类
  • VGG
  • ResNet
  • DensNet
  • YOLO系列
  • RCNN系列
  • SSD
  • DeepLab系列
  • U-Net
  • SAM

PAC

  • 概率近似准确

$$
P(|f(x)-y|≤\epsilon)≥1-\delta
$$

NFL定理

一个算法若在某些问题上比另一个算法好,必存在另一些问题一者比另一者好。

三大问题

  • 评估方法

    • 测试集应该与训练集“互斥”
      • 留出法
        • 分层采样
        • 随机划分
        • 测试集不能太大、太小
      • K-折交叉验证法
      • 自助法
  • 性能度量

  • 比较检验

    • 交叉验证t校验

      • k折交叉验证
    • McNemar检验(基于联列表,卡方检验)

分类

前馈型神经网络

反馈型神经网络

自组织神经网络

分支

分支一:计算机视觉(CV)

分支二:语音识别

  • 鸡尾酒效应
    • 同时多个声音出现,计算机无法准确识别各个说话主体,无法进行排异

分支三:文本挖掘/分类

  • 关键字

分支四:机器翻译(MT)

分支五:机器人

Python-机器学习

工具包package类型

  • Numpy
    • FFT/Gauss/LSQ/SVD
    • ndarray
  • pandas
    • DataFrame
    • Series(Excel/csv/tsv)
  • scipy
    • Gamma
    • Comb
  • matplotlib
  • scikit-learn
    • ML
  • tensorflow(Keras)/pyTorch/Theano(Keras)/Caffe/PandlePandle
    • DL

安装包

  • pip

IDE

  • Anaconda
  • PyCharm

Numpy、matplotlib、pandas实操

随机点阵图

import numpy as np
import matplotlib.pyplot as plt

#随机点阵图
data = np.random.rand(1000, 2)
print(data)
x = data[:, 0]
y = data[:, 1]
plt.plot(x, y, 'go', markersize=1)
plt.show()

效果:

image-20230409163113613

随机柱状图

import numpy as np
import matplotlib.pyplot as plt

#随机柱状图
p = np.random.rand(10000)
np.set_printoptions(edgeitems=5000, suppress=True)
plt.hist(p, bins=20, color='g', edgecolor='k')
plt.show()

效果:(均匀分布)

image-20230409164113512

import numpy as np
import matplotlib.pyplot as plt

#迭代柱状图
N = 10000
times = 100
z = np.zeros(N)
for i in range(times):
    z += np.random.rand(N)
z /= times
plt.hist(z, bins=20, color='m', edgecolor='k')

效果:(高斯分布)

image-20230409164558866

随机生成数组

  • numpy -> ndarray
  • pandas -> DataFrame
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

d = np.random.rand(3,4)
print(d)
print(type(d))
data = pd.DataFrame(data=d)
print('='*50)
print(data)
print(type(data))

image-20230409173000728

随机折线图

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

x = np.linspace(0, 1, 100)
print(x)
y = x**x
plt.plot(x, y, 'r-', lw=1)
plt.show()

image-20230409173933737

读写文本格式数据

image-20230425133808727

前馈神经网络(BP算法)

结构

  • 输入层
  • 隐层
  • 输出层

image-20230414003800860

损失函数

$$
\sum_{Sample} \sum_{i=1}^k (\hat{y_k} - y_k)
$$

激活函数

  • Sigmoid函数
    • 优点:输出范围有限(0,1)
    • 缺点:梯度下降明显,两头平坦 -> 梯度消失

$$
\psi(x)=\frac{1}{1+e^{-x}}
$$

  • tanh函数
    • 优点:值域对称,完全可微分、反对称
    • 缺点:梯度消失问题

$$
tanh(x)=\frac{e^x - e^{-x}}{e^x + e^{-x}}
$$

  • ReLu函数
    • 优点:线性,收敛速度快,无梯度饱和

$$
R(z)=max(0,z)
$$

函数特性

  • 非线性
  • 可微性
  • 单调性
  • f(x) ≈ x
  • 输出值范围
  • 计算简单
  • 归一化

交叉熵

二分类问题
$$
J(w)=\frac{1}{N}\sum_{n=1}^NH(p_n,q_n)=-\frac{1}{N}\sum_{n=1}^N[y_nlog\hat{y_k} + (1-y_n)log(1-\hat{y_k})]
$$

学习率(步长)

  • 手动调整
  • 固定学习率
  • 动量法动态调整
  • 随机梯度下降
  • Adam自动调整

过拟合

防止方法:

  • 参数范数惩罚
    • 修改损失函数 -> 惩罚函数
  • 数据增强
  • 提前终止
    • 每过几个epoch来验证一次,查看是否过拟合了
  • Bagging等集成方法
  • Dropout
    • 有概率的在训练中放弃一些神经元点
  • 批正则化

归一化处理

将一个数值组中最大最小值所在区间映射到[0,1]的区间上进行后续的数据处理


文章作者: 寜笙
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 寜笙 !
 上一篇
2023-04-10 寜笙
下一篇 
2023-01-14 寜笙
  目录