数学表达式魔训

阅读: 评论:0

数学表达式魔训

数学表达式魔训

8.3 作业
  • 将向量下标为偶数的分量累加
    ∑ i % 2 = 0 x i sum_{i % 2 = 0} x_i ∑i%2=0​xi​

    double sum = 0;
    for (int i = 1; i <= n; i++){if(i % 2 == 0){sum += x[i];}
    }
    
  • 各出一道累加、累乘、积分表达式的习题, 并给出标准答案
    例1:求 1 + 2 ! + 3 ! + ⋯ + 10 ! 1+2!+3!+dots+10! 1+2!+3!+⋯+10!的和
    ∑ i = 1 10 ∏ j = 1 i x j sum_{i=1}^{10}prod_{j=1}^{i}x_j i=1∑10​j=1∏i​xj​

    float n, s = 0, t = 1;
    for(n = 1; n <= 10; n++) {t *= n;s += t;
    }
    printf("1+2!+3!...+10!=%en", s); // 4.037913e+006
    

    例2: ∫ 0 2 x d x int_{0}^{2} x mathrm{d}x ∫02​xdx

    double integration = 0;
    double delta = 0.01;
    for (double x = 0; x <= 2; x += delta){integration += x * delta;
    }
    printf("%f",integration); //1.990000
    
  • 你使用过三重累加吗? 描述一下其应用
    需要计算三维数组元素总和时使用, 同理 n n n 维数组用到 n n n 重累加

  • 给一个常用的定积分, 将手算结果与程序结果对比
    ∫ 0 π 2 sin ⁡ ( x ) d x int_{0}^{frac{pi}{2}} sin(x) mathrm{d}x ∫02π​​sin(x)dx
    使用C语言程序结果:

    #include<math.h>
    #include<stdio.h>
    #define PI acos(-1)
    int main(){double integration = 0;double delta = 0.01;for (int x = 0; x <= PI/2; x += delta)integration += sin(x) * delta;printf("%f",integration); // 1.004195return 0;
    }
    

    手算结果:
    ∫ 0 π 2 sin ⁡ ( x ) d x = − cos ⁡ ( x ) ∣ 0 π 2 = 1 int_{0}^{frac{pi}{2}} sin(x) mathrm{d}x= -cos(x) vert_0^{frac{pi}{2}}= 1 ∫02π​​sin(x)dx=−cos(x)∣02π​​=1

9.3 作业
  • 自己写一个小例子 ( n = 3 , m = 1 ) (n = 3 , m = 1) (n=3,m=1) 来验证最小二乘法
    X = [ 1 2 1 1 1 1 ] , Y = [ 1 2 1 ] mathbf{X}= begin{bmatrix} 1 & 2 \ 1 & 1 \ 1 & 1 \ end{bmatrix}, mathbf{Y}= begin{bmatrix} 1\ 2\ 1\ end{bmatrix} X=⎣⎡​111​211​⎦⎤​,Y=⎣⎡​121​⎦⎤​
    w mathbf{w} w 计算式子:
    w = ( X T X ) − 1 X T Y mathbf{w}=(mathbf{X}^mathbf{T}mathbf{X})^{-1}mathbf{X}^mathbf{T}mathbf{Y} w=(XTX)−1XTY
    即:
    w = ( [ 1 1 1 2 1 1 ] × [ 1 2 1 1 1 1 ] ) − 1 × [ 1 1 1 2 1 1 ] × [ 1 2 1 ] mathbf{w}= left( begin{bmatrix} 1 & 1 & 1\ 2 & 1 & 1\ end{bmatrix} times begin{bmatrix} 1 & 2 \ 1 & 1 \ 1 & 1 \ end{bmatrix} right)^{-1} times begin{bmatrix} 1 & 1 & 1\ 2 & 1 & 1\ end{bmatrix} times begin{bmatrix} 1\ 2\ 1\ end{bmatrix} w=⎝⎛​[12​11​11​]×⎣⎡​111​211​⎦⎤​⎠⎞​−1×[12​11​11​]×⎣⎡​121​⎦⎤​
    最终结果:
    w = [ 2 − 0.5 ] mathbf{w}= begin{bmatrix} 2\ -0.5\ end{bmatrix} w=[2−0.5​]
    其中 w 0 = b = 2 w_0=b=2 w0​=b=2
写出关于 w mathbf{w} w 的推导过程

推导过程:
∥ X w − Y ∥ 2 2 = ( X w − Y ) T ( X w − Y ) = ( w T X T − Y T ) ( X w − Y ) = w T X T X w − w T X T Y − Y T X w − Y T Y begin{aligned} lVert mathbf{X}mathbf{w}-mathbf{Y} rVert_2^2&= (mathbf{X}mathbf{w}-mathbf{Y})^{mathbf{T}}(mathbf{X}mathbf{w}-mathbf{Y}) \&= (mathbf{w}^{mathbf{T}}mathbf{X}^{mathbf{T}}-mathbf{Y}^{mathbf{T}})(mathbf{X}mathbf{w}-mathbf{Y}) \&= mathbf{w}^{mathbf{T}}mathbf{X}^{mathbf{T}}mathbf{X}mathbf{w}-mathbf{w}^{mathbf{T}}mathbf{X}^{mathbf{T}}mathbf{Y}-mathbf{Y}^{mathbf{T}}mathbf{X}mathbf{w}-mathbf{Y}^{mathbf{T}}mathbf{Y} end{aligned} ∥Xw−Y∥22​​=(Xw−Y)T(Xw−Y)=(wTXT−YT)(Xw−Y)=wTXTXw−wTXTY−YTXw−YTY​
令 J ( w ) = w T X T X w − w T X T Y − Y T X w − Y T Y J(mathbf{w})=mathbf{w}^{mathbf{T}}mathbf{X}^{mathbf{T}}mathbf{X}mathbf{w}-mathbf{w}^{mathbf{T}}mathbf{X}^{mathbf{T}}mathbf{Y}-mathbf{Y}^{mathbf{T}}mathbf{X}mathbf{w}-mathbf{Y}^{mathbf{T}}mathbf{Y} J(w)=wTXTXw−wTXTY−YTXw−YTY, 将该式关于 w mathbf{w} w 求导 (使用向量求导法则) 并令其为 0。
矩阵求导法则:
d A B d B = A T d A T B d A = B d X T A X d X = 2 A X begin{aligned} frac{dmathbf{A}mathbf{B}}{dmathbf{B}}&=mathbf{A}^{mathbf{T}} \ frac{dmathbf{A}^{mathbf{T}}mathbf{B}}{dmathbf{A}}&=mathbf{B} \ frac{dmathbf{X}^{mathbf{T}}mathbf{A}mathbf{X}}{dmathbf{X}}&=2mathbf{AX} \ end{aligned} dBdAB​dAdATB​dXdXTAX​​=AT=B=2AX​
所以:
d J ( w ) d w = 2 X T X w − X T Y − X T Y − 0 = 2 X T X w − 2 X T Y = X T X w − X T Y begin{aligned} frac{dJ(mathbf{w})}{dmathbf{w}}&=2mathbf{X}^mathbf{T}mathbf{X}mathbf{w}-mathbf{X}^mathbf{T}mathbf{Y}-mathbf{X}^mathbf{T}mathbf{Y}-0\ &=2mathbf{X}^mathbf{T}mathbf{X}mathbf{w}-2mathbf{X}^mathbf{T}mathbf{Y}\ &=mathbf{X}^mathbf{T}mathbf{X}mathbf{w}-mathbf{X}^mathbf{T}mathbf{Y} end{aligned} dwdJ(w)​​=2XTXw−XTY−XTY−0=2XTXw−2XTY=XTXw−XTY​
令 d J ( w ) d w = 0 frac{dJ(mathbf{w})}{dmathbf{w}}=0 dwdJ(w)​=0 得 w = ( X T X ) − 1 X T Y mathbf{w}=(mathbf{X}^mathbf{T}mathbf{X})^{-1}mathbf{X}^mathbf{T}mathbf{Y} w=(XTX)−1XTY

10.6 作业

自己推导一遍Logistic 回归, 并描述这个方法的特点 (不少于 5 条)
逻辑回归特点:

  • 选择sigmoid 函数作为阶跃函数, 因为sigmoid函数满足在实数集上可导, 并且sigmoid函数能将数据转换为0到1之间数, 将数据归一化
  • 利用极大似然估计求解优化问题, 使用连乘的方式考虑到每个条件概率
  • 求解最大似然问题时, 通常两边取对数, 将连乘转化为连加, 降低计算难度
  • 在对 w w w 求导时, 由于 w w w 作为一个向量, 求导后计算导数为0时需要求解一个方程组, 且无法获得解析式, 所以采用梯度下降的方式
  • 统一 y i y_i yi​ 的不同取值(0,1), 广义化优化目标
  • 带参数的条件概率写法: P ( y = 1 ∣ x ; w ) P(y=1 vert mathbf{x};mathbf{w}) P(y=1∣x;w), 在分号后面写上参数

推导过程:
1.sigmoid函数: P ( y = 1 ∣ x ; w ) = 1 1 + e − x w P(y = 1 vert mathbf{x}; mathbf{w}) = frac{1}{1 + e^{-mathbf{xw}}} P(y=1∣x;w)=1+e−xw1​
2.优化目标: P ( y i ∣ x i ; w ) = P ( y i = 1 ∣ x i ; w ) y i ( 1 − P ( y i = 1 ∣ x i ; w ) 1 − y i ) P(y_ivert mathbf{x_i}; mathbf{w}) =P(y_i=1vert mathbf{x_i}; mathbf{w})^{y_i}(1-P(y_i=1vert mathbf{x_i}; mathbf{w})^{1-y_i}) P(yi​∣xi​;w)=P(yi​=1∣xi​;w)yi​(1−P(yi​=1∣xi​;w)1−yi​)
3.将优化目标转化为极大似然: arg max ⁡ w L ( w ) = ∏ i = 1 n P ( y i ∣ x i ; w ) underset{mathbf{w}}{argmax} L(mathbf{w})=prod_{i=1}^nP(y_i vert mathbf{x_i};mathbf{w}) wargmax​L(w)=∏i=1n​P(yi​∣xi​;w),记 损失函数为 L ( w ) L(mathbf{w}) L(w)
4.求解 w mathbf{w} w 偏导:
log ⁡ L ( w ) = ∑ i = 1 n log ⁡ P ( y i ∣ x i ; w ) = ∑ i = 1 n y i log ⁡ P ( y i = 1 ∣ x i ; w ) + ( 1 − y i ) log ⁡ ( 1 − P ( y i = 1 ∣ x i ; w ) ) = ∑ i = 1 n y i log ⁡ P ( y i = 1 ∣ x i ; w ) 1 − P ( y i = 1 ∣ x i ; w ) + log ⁡ ( 1 − P ( y i = 1 ∣ x i ; w ) ) = ∑ i = 1 n y i x i w − log ⁡ ( 1 + e x i w ) begin{aligned} log L(mathbf{w}) & = sum_{i = 1}^n log P(y_i vert mathbf{x}i; mathbf{w}) \ &= sum_{i = 1}^n y_i log P(y_i = 1 vert mathbf{x}_i; mathbf{w}) + (1 - y_i) log(1 - P(y_i = 1 vert mathbf{x}i; mathbf{w})) \ &= sum_{i = 1}^n y_i log frac{P(y_i = 1 vert mathbf{x}_i; mathbf{w})}{1 - P(y_i = 1 vert mathbf{x}_i; mathbf{w})} + log (1 - P(y_i = 1 vert mathbf{x}i; mathbf{w})) \ &= sum_{i = 1}^n y_i mathbf{x}_i mathbf{w} - log (1 + e^{mathbf{x}_i mathbf{w}}) end{aligned} logL(w)​=i=1∑n​logP(yi​∣xi;w)=i=1∑n​yi​logP(yi​=1∣xi​;w)+(1−yi​)log(1−P(yi​=1∣xi;w))=i=1∑n​yi​log1−P(yi​=1∣xi​;w)P(yi​=1∣xi​;w)​+log(1−P(yi​=1∣xi;w))=i=1∑n​yi​xi​w−log(1+exi​w)​
∂ log ⁡ L ( w ) ∂ w = ∑ i = 1 n y i x i − e x i w 1 + e x i w x i = ∑ i = 1 n ( y i − e x i w 1 + e x i w ) x i begin{aligned} frac{partial log L(mathbf{w})}{partial mathbf{w}} &= sum_{i = 1}^n y_i mathbf{x}_i - frac{e^{mathbf{x}_i mathbf{w}}}{1 + e^{mathbf{x}_i mathbf{w}}} mathbf{x}i \ & = sum_{i = 1}^n left(y_i - frac{e^{mathbf{x}_i mathbf{w}}}{1 + e^{mathbf{x}_i mathbf{w}}}right) mathbf{x}_iend{aligned} ∂w∂logL(w)​​=i=1∑n​yi​xi​−1+exi​wexi​w​xi=i=1∑n​(yi​−1+exi​wexi​w​)xi​​
这里存在一个问题, 在对 w w w 求导时, 由于 w w w 作为一个向量, 求导后计算导数为0时需要求解一个方程组, 且无法获得解析式, 所以采用梯度下降的方式:
w t + 1 = w t − α ∂ log ⁡ L ( w ) ∂ w mathbf{w}^{t+1}=mathbf{w}^t-alphafrac{partial log L(mathbf{w})}{partial mathbf{w}} wt+1=wt−α∂w∂logL(w)​
这里 α alpha α 为学习率, 需要合适设置, 通常取0.001, 学习率不宜过大也不宜过小, 学习率偏大可能会导致 w mathbf{w} w 值震荡越来越偏离最优值, 学习率偏小又会造成收敛幅度过小

本文发布于:2024-01-31 07:43:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170665818726794.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:魔鬼训练1
标签:表达式   数学
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23