数学表达式魔训-第三次作业

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

    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=110j=1ixj

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

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

    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.004195
    	return 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=111211,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=[121111]×1112111×[121111]×121
    最终结果:
    w = [ 2 − 0.5 ] \mathbf{w}= \begin{bmatrix} 2\\ -0.5\\ \end{bmatrix} w=[20.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} XwY22=(XwY)T(XwY)=(wTXTYT)(XwY)=wTXTXwwTXTYYTXwYTY
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)=wTXTXwwTXTYYTXwYTY, 将该式关于 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{d\mathbf{A}\mathbf{B}}{d\mathbf{B}}&=\mathbf{A}^{\mathbf{T}} \\ \frac{d\mathbf{A}^{\mathbf{T}}\mathbf{B}}{d\mathbf{A}}&=\mathbf{B} \\ \frac{d\mathbf{X}^{\mathbf{T}}\mathbf{A}\mathbf{X}}{d\mathbf{X}}&=2\mathbf{AX} \\ \end{aligned} dBdABdAdATBdXdXTAX=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})}{d\mathbf{w}}&=2\mathbf{X}^\mathbf{T}\mathbf{X}\mathbf{w}-\mathbf{X}^\mathbf{T}\mathbf{Y}-\mathbf{X}^\mathbf{T}\mathbf{Y}-0\\ &=2\mathbf{X}^\mathbf{T}\mathbf{X}\mathbf{w}-2\mathbf{X}^\mathbf{T}\mathbf{Y}\\ &=\mathbf{X}^\mathbf{T}\mathbf{X}\mathbf{w}-\mathbf{X}^\mathbf{T}\mathbf{Y} \end{aligned} dwdJ(w)=2XTXwXTYXTY0=2XTXw2XTY=XTXwXTY
d J ( w ) d w = 0 \frac{dJ(\mathbf{w})}{d\mathbf{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=1x;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=1x;w)=1+exw1
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_i\vert \mathbf{x_i}; \mathbf{w}) =P(y_i=1\vert \mathbf{x_i}; \mathbf{w})^{y_i}(1-P(y_i=1\vert \mathbf{x_i}; \mathbf{w})^{1-y_i}) P(yixi;w)=P(yi=1xi;w)yi(1P(yi=1xi;w)1yi)
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}) wargmaxL(w)=i=1nP(yixi;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=1nlogP(yixi;w)=i=1nyilogP(yi=1xi;w)+(1yi)log(1P(yi=1xi;w))=i=1nyilog1P(yi=1xi;w)P(yi=1xi;w)+log(1P(yi=1xi;w))=i=1nyixiwlog(1+exiw)
∂ 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}_i\end{aligned} wlogL(w)=i=1nyixi1+exiwexiwxi=i=1n(yi1+exiwexiw)xi
这里存在一个问题, 在对 w w w 求导时, 由于 w w w 作为一个向量, 求导后计算导数为0时需要求解一个方程组, 且无法获得解析式, 所以采用梯度下降的方式:
w t + 1 = w t − α ∂ log ⁡ L ( w ) ∂ w \mathbf{w}^{t+1}=\mathbf{w}^t-\alpha\frac{\partial \log L(\mathbf{w})}{\partial \mathbf{w}} wt+1=wtαwlogL(w)
这里 α \alpha α 为学习率, 需要合适设置, 通常取0.001, 学习率不宜过大也不宜过小, 学习率偏大可能会导致 w \mathbf{w} w 值震荡越来越偏离最优值, 学习率偏小又会造成收敛幅度过小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值