• 机器学习笔记(1)常见符号,批次梯度下降,随机梯度下降


    机器学习

    一,常见符号

    h(x) = ∑ θ j x j ∑θjxj θjxj 其中·的xj是输入的量,而θ则是线性回归时候的系数,通常x0等于1作为一个虚拟的特征,h是假设的。

    θ = [ θ 1 , θ 2 , θ 3 ] T \theta=[\theta_{1},\theta_{2},\theta_{3}]^{T} θ=[θ1,θ2,θ3]T

    x = [ x 1 , x 2 , x 3 ] T x=[x_{1},x_{2},x_{3}]^{T} x=[x1,x2,x3]T

    θ = " p a r a m e t e r " \theta = "parameter" θ="parameter" theta 是参数。

    M = #training examples 训练数目 #代表着数目。

    x = “inputs”/feature x是输入,或者有叫特征。

    y = “output”/target variable。

    ( x , y ) (x,y) (x,y)= training example 训练实例。

    ( x i , y i ) = i t h (x^{i},y^{i}) = i_{th} (xi,yi)=ith training example 第i个训练实例。

    x a ( b ) x_a^{(b)} xa(b)表示的是第b个训练实例里面的第a个参数(上标指的是训练实例,下标指的是参数的顺序。

    n = #feature n代表的是特征的个数,n=|x|-1,n=x的维度-1,因为x0是一个虚拟的特征,这个虚拟的特征是不算在n里面的。

    h θ ( x ) = h ( x ) h_\theta(x) = h(x) hθ(x)=h(x) 方便书写,假设函数h其实是和θ有关的。

    ∇ θ J ( θ ) = [ ∂ J ( θ ) θ 0 , ∂ J ( θ ) θ 1 , ∂ J ( θ ) θ 2 ] T \nabla_\theta J(\theta)=[\frac{\partial J(\theta)}{\theta_0},\frac{\partial J(\theta)}{\theta_1},\frac{\partial J(\theta)}{\theta_2}]^T θJ(θ)=[θ0J(θ),θ1J(θ),θ2J(θ)]T 这条式子的意思是对成本函数求偏导,并且写成矩阵的形式。

    对任意的 f ( A ) = t r A B f(A)= trAB f(A)=trAB (A,B是任意的矩阵,tr指的是迹:主对角线的元素之和, t r A B C = t r C A B = t r B C A trABC=trCAB=trBCA trABC=trCAB=trBCA迹的循环排列)

    ∇ θ f ( A ) = B T \nabla_\theta f(A) = B^T θf(A)=BT(证明用到 ∇ A t r A A T C = C A + C T A \nabla_A trAA^TC = CA+C^TA AtrAATC=CA+CTA,有点像 ∂ a 2 c ∂ a = 2 a c \frac{\partial a^2c}{\partial a} = 2ac aa2c=2ac

    线性回归(linear regression)里面的目标就是使得

    这个式子 J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\frac{1}{2}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^{2} J(θ)=21i=1m(hθ(x(i))y(i))2 最小化

    其中的 1 2 \frac{1}{2} 21是为了保证等等求导的时候可以减少计算量。

    批次梯度下降(收敛,全局最优)(Batch Gradient Descent,BGD)

    那最小化这个 J ( θ ) J(\theta) J(θ)的方法算法是怎么呢,这里就要提到梯度下降算法(gradient descent)

    1.将θ设置成一个0向量,作为一个初始值

    2.持续更改θ来减少 J ( θ ) J(\theta) J(θ)

    θ j : = θ j − α ∂ ∂ θ j J ( θ ) \theta_j:=\theta_j-\alpha\frac{\partial }{\partial \theta j}J(\theta) θj:=θjαθjJ(θ)

    将每次的θj更换成右边的式子进行迭代,其中的 α \alpha α叫做学习率(learning rate),右边是J(θ)对θj的偏导数,这一步在一轮中要进行n次,每个特征都要做一次进行最小化。

    ∂ ∂ θ j J ( θ ) = ∂ 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 ∂ θ j \frac{\partial }{\partial \theta j}J(\theta) = \frac{\partial\frac{1}{2}\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^{2}}{\partial \theta_j} θjJ(θ)=θj21i=1m(hθ(x(i))y(i))2对此求偏导数

    h θ ( x ) = ∑ i = 0 n θ i x i h_\theta(x) = \sum_{i=0}^{n}\theta_ix_i hθ(x)=i=0nθixi

    h θ ( x ) h_\theta(x) hθ(x)求偏导,首先得由于链式法则,平方的那个2要乘上去和1/2抵消,再乘上一个括号一样的东西。

    由于是只对 θ i \theta_i θi偏导,所以别的项全变成了0,只依赖于对应的θiXi项。

    最后第一步的转换就变成了这样了。

    θ j : = θ j − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x j ( i ) \theta_j:=\theta_j - \alpha\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})*x_j^{(i)} θj:=θjαi=1m(hθ(x(i))y(i))xj(i)后面的那一大坨就是偏导数最后简化的结果了。

    3.每一次都往最低的方向走下坡路,也就是沿着梯度最小的方向走babystep

    4.梯度下降法的结果,取决于初始的θ值(不同的起点)

    5.每次的操作是for(j=1,…,n)进行第3步的操作直到收敛。

    6.每次的迭代都是对全局进行的,所以消耗将会非常非常大。

    随机梯度下降****(Stochastic Gradient Descent,SGD)****

    永远的震荡,并且不会收敛,但是允许不断变换,得到结果会更快

    θ j : = θ j − ( h θ ( x ( i ) ) − y ( i ) ) ∗ x j ( i ) \theta_j:=\theta_j - (h_\theta(x^{(i)})-y^{(i)})*x_j^{(i)} θj:=θj(hθ(x(i))y(i))xj(i)

    每次迭代的公式是这样的,并没有求和符号,并不是进行全局的

    repeat{

    θ j : = θ j − ( h θ ( x ( i ) ) − y ( i ) ) ∗ x j ( i ) \theta_j:=\theta_j - (h_\theta(x^{(i)})-y^{(i)})*x_j^{(i)} θj:=θj(hθ(x(i))y(i))xj(i) j从0到n

    }i从1到m

  • 相关阅读:
    CSDN机器学习常用科学公式写法汇总【更新中】
    【已解决】Qt无法追踪到mouse移动事件
    Python GIL及其釋放/獲取函數
    【图形学】17 光照模型(二、漫反射的Shader实现)
    【docker搭建pytorch环境及常用指令】
    mybatis ORDER BY FIND_IN_SET 失效的一次问题排查
    云计算专业创新人才培养体系的探索与实践
    如何记录每天的工作日程?电脑手机通用的日程管理软件
    Flink集群常见的监控指标
    js字符串对比之localeCompare()方法-对字符串进行排序——大于0-升序、小于0-降序 & 对el-table的列进行排序sort-change
  • 原文地址:https://blog.csdn.net/qq_43445553/article/details/126324429