雷哥的博客


  • 首页

  • 分类

  • 归档

  • 标签

PCA

发表于 2018-06-22 | 分类于 机器学习 , 算法

参考文章

基础

  • 线性代数相关概念

    • 对称矩阵:除对角线,其余值一三象限相等
    • 对角矩阵(diagonal matrix):是一个主对角线之外的元素皆为0的矩阵
    • 矩阵对角化:如果存在一个矩阵A,使$A^{-1}MA$ 的结果为对角矩阵,则称矩阵A将矩阵M 对角化。对于一个矩阵来说,不一定存在将其对角化的矩阵,但是任意一个n×n矩阵如果存在n个线性不相关的特征向量,则该矩阵可被对角化
      • 定理(理解特征值和特征向量的作用):
    • 实对称矩阵
      • 实对称矩阵A的不同特征值对应的特征向量是正交的。(PCA算法最终就是将初始值的协方差矩阵变化为实对称矩阵)
      • 实对称矩阵A的特征值都是实数,特征向量都是实向量。
  • 协方差

    • 均值描述的是样本集合的中间点,而标准差给我们描述的则是样本集合的各个样本点到均值的距离之平均,都是一维数据
      $var(X)=\frac{\sum^{n}_{i=1}(X_i-\overline X)(X_i-\overline X)}{n}$
    • 协方差:协方差就是这样一种用来度量两个随机变量关系的统计量
      • $cov(X,Y)=\frac{\sum^{n}_{i=1}(X_i-\overline X)(Y_i-\overline Y)}{n}$。如果各维度均值都标准化为0,那么就简化为:$cov(X,Y)=\frac{\sum^{n}_{i=1}(X_i)(Y_i)}{n}$
      • 如果结果为正值,则说明两者是正相关的,否则为负相关。如果为0,表示不相关,也就是正交
  • 协方差矩阵

    • 如果有多维的情况,就可以使用矩阵的思想来看更直观,比如三维的例子:
      $C = \begin{bmatrix}
      cov(x,x),cov(x,y),cov(x,z)
      \
      cov(y,x),cov(y,y),cov(y,z)
      \
      cov(z,x),cov(z,y),cov(z,z)
      \end{bmatrix}$
    • 协方差矩阵计算:
      • 假设我们只有a和b两个字段(两维度特征),那么我们将它们按行组成矩阵X
        $X=\begin{bmatrix}
        a_1,a_2,a_3….a_n
        \
        b_1,b_2,b_3….b_n
        \end{bmatrix}
        $
      • 然后我们用X乘以X的转置,并乘上系数1/m
        $\frac1mXX^T=\begin{bmatrix}
        \frac1m\sum^m_{i=1}a_ia_i \frac1m\sum^m_{i=1}a_ib_i
        \
        \frac1m\sum^m_{i=1}a_ib_i \frac1m\sum^m_{i=1}b_ib_i
        \end{bmatrix}
        $
      • 设我们有m个n维数据记录,将其按列排成n乘m的矩阵X,设$C=1mXX𝖳,则C是一个对称矩阵,其对角线分别个各个字段的方差,而第i行j列和j行i列元素相同,表示i和j两个字段的协方差

Backpropagation

发表于 2018-06-20 | 分类于 机器学习 , 算法

参考链接

目的

  • BP 算法的目的在于为优化函数(比如梯度下降、其它的高级优化方法)提供梯度值,即使用 BP 算法计算代价函数(cost function)对每个参数的偏导值,其数学形式为:$\frac{\partial}{\partial\theta^l_{ij}}J(\theta)$,并最终得到的值存放在矩阵$\Delta^{(l)}$中。

网络结构

  • 简单神经网络结构:
  • 单个数据的代价函数:

神经网络学习算法图概览

  • 清楚一个函数的求导对象:输入值
    给定一个函数 f(x),它的首要求导对象是什么?就是它的输入值,是自变量 x。那 f(g(x)) 呢?即把g(x) 当作一个整体作为它的输入值,它的自变量。那么 g(x) 这个整体就是它的首要求导对象。因此,一个函数的求导对象是它的输入值,是它的自变量。弄清楚这一点,才能在求多元函数偏导的链式法则中游刃有余。

  • 神经网络中各数据之间的关系——谁是谁的输入值
    图 3.1 自下而上,每一个框是上面一个框的输入值,也即上面一个框中函数的自变量。这张图明确了神经网络中各数据之间的关系——谁是谁的输入值,图中表现得非常清楚。上段提到一个函数的求导对象是它的输入值,那么通过图 3.1 就能非常方便地使用链式法则,也能清楚地观察到 BP 算法的流程(后面一个小节会给出一个更具体的 BP 流程图)。

  • 神经网络的学习(训练)流程(前馈传播和BP算法)
    对照文首给出的图 1.1 神经网络的模型图,应该很容易理解图 3.1 的含义,它大致地展现了神经网络的学习(训练)流程。前馈传播算法自下而上地向上计算,最终可以得到 a(3),进一步可以计算得到 J(Θ)。而 BP 算法自顶向下,层层求偏导,最终得到了每个参数的梯度值。下面一个小节将仔细介绍本文的主题,即 BP 算法的流程图解。

BP 算法的直观图解

  • BP 算法的流程在这张图中清晰可见:自顶向下(对应神经网络模型为自输出层向输入层)层层求偏导(核心:找准谁是谁的输入,对求偏导尤其重要)
  • 所以 BP 算法即反向传播算法,就是自顶向下求代价函数$J(\theta)$ 对各个参数$\theta^l_{ij}$ 偏导($\frac{\partial}{\partial\theta^l_{ij}}J(\theta)$)的过程,对应到神经网络模型中即自输出层向输入层层层求偏导
  • 从这里可以看出:,为什么要使用BP算法:

    • 自输出层向输入层(即反向传播),逐层求偏导,在这个过程中逐渐得到各个层的参数梯度。
    • 在反向传播过程中,使用$\delta(l)$ 保存了部分结果,从而避免了大量的重复运算。
  • 详细推导计算过程可以参考原文

NeuralNetwork

发表于 2018-06-18 | 分类于 机器学习 , 机器学习基础

习题代码:NeuralNetwork

人脑神经元

  • 人脑内就有很多神经元构成,神经元与神经元之间互相连接,传递电信号等

模型

  • 基础结构:类似逻辑回归模型
  • 网络架构

    • 每个神经单元都是一个上图的基础结构,输出a是激活值,g是sigmoid激活函数
    • 架构分为第一层(输入层),第二层(隐藏层)….输出层
    • 前向计算:每个神经元都依次计算
  • 直观理解网络含义

    • 每一层都是通过逻辑回归来完成,通过增加隐层的数量,或者通过增加一个隐藏中的单元数,来完成不同的功能,就能够得到更复杂的模型,完成更复杂的功能(简单理解为每个神经单位都是一个逻辑回归结构,都能够完成一个独立的功能)
      • 比如亦或问题

处理多分类问题

  • 每个分类被一个节点判断出(像上一节类似,一个节点判断and,一个节点判断or,它们的下一层节点就能判断更复杂的内容)
  • 多个分类,可以在一个神经网络中判断输出
  • 逻辑回归时候,是把多分类问题,视为多个二分类问题处理的(多个$h_\theta^i(x)$)

Cost function

  • 和逻辑回归的cost function非常类似,其中m表示样本数,K表示神经网络最终输出的个数,正则化项包含了所有参数

求最优解

  • 求解算法最常用的当然也是使用的梯度下降,然后也可以使用深度学习中的动态梯度下降,RMProp,Adam等
  • 梯度的计算也可以使用最原始的方法,对每个参数求解梯度,但是由于神经网络中参数太多,原始方法效率太低,所以有了后面的Backpropagation算法

Logistic Regression

发表于 2018-06-08 | 分类于 机器学习 , 机器学习基础

习题代码:Logistic Regression

使用场景:解决分类问题

  • Logistic Regression使用场景是解决分类问题
    • 二分类或者多分类,多分类模型(多次二分类或者后面学习到的softmax)
    • 数据分布
      • 二分类模型中,线性分布:
      • 也可能是非线性分布:

逻辑回归模型

  • Hypothese:$h_\theta(x)=g(z)=\frac{1}{1+e^{-z}}$
    Sigmoid: 所以:$y = \begin{bmatrix}
    1(h_\theta(x) >= 0.5)
    \
    0(h_\theta(x) < 0.5)
    \end{bmatrix}$
  • $z = \begin{bmatrix}
    \theta^Tx = \theta_0+\theta_1x_1+\theta_2x_2…(数据线性分布)
    \
    x^2+y^2-1 (非线性分布,这里是圆形分布)
    \end{bmatrix}$
  • Cost fun:
    • 推导:
  • 梯度:

条件概率角度理解

  • $h_\theta(x) = P(y=1|x;\theta) = 1-P(y=0|x;\theta)$
  • $P(y=1|x;\theta) + P(y=0|x;\theta) = 1$

正则化

  • 当数据分布为非线性的时候,如果使用多项式去拟合,那么很容易出现过拟合问题,这个时候就需要使用L1,L2正则化去处理
  • 直观理解:正则化的根本目的就是将过拟合的参数调到合适大小
  • cost_reg:
  • 梯度_reg:
  • 超参数$\lambda$对拟合程度和准确率等的影响

多分类

  • 思想:对每个类别都会有一个$h_\theta(x)$对应:$h_\theta^i(x)$。输入x,获取使最大的$h_\theta^i(x)$的i值

吴恩达课程习题

发表于 2018-06-02 | 分类于 机器学习 , 吴恩达课程习题

习题托管于github,包括学习心得总结

1-LinearRegression

2-LogisticRegression

3-LogisticR-Multiclass-and-Neturalnetwork

4-NeuralNetwork

5-Regularized-LinearR-and-Bias-Variance

6-svm

7-KMeans

Linear Regression

发表于 2018-06-01 | 分类于 机器学习 , 机器学习基础

习题代码:Linear Regression

回归模型:线性回归

  • 场景:房价预测,输入输出能够用线性方程拟合,输出为实数
  • 核心公式:
    • LR使用的是最小二乘法
      • 均方误差:是参数估计值与参数真值之差的平方的期望值$MSE=\frac{1}{N}\sum_{t=1}^N(observed_t-predicted_t)^2$
      • 最小二乘法:基于均方误差最小化来进行模型求解的方法称为“最小二乘法”
    • 公式:
  • 公式推导:
  • 心得:
    • 理解向量是n个维度(n行),一列的特殊矩阵
    • X下角标表示第n个特征,上角标m表示第m个样本,可以理解为第m个样本的向量(每个样本都包含n维的特征)
    • 理解矩阵的乘积,向量,替换普通程序思维的for循环等
    • 数据归一化,会收敛得更快,Loss曲线也更平滑
1…67
雷哥

雷哥

不积跬步无以至千里

66 日志
18 分类
16 标签
GitHub
© 2019 雷哥
由 Hexo 强力驱动
主题 - NexT.Gemini