将向量下标为偶数的分量累加
∑ 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=1∑10j=1∏ixj
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 ∫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.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
推导过程:
∥ 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} 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})}{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
自己推导一遍Logistic 回归, 并描述这个方法的特点 (不少于 5 条)
逻辑回归特点:
推导过程:
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}) wargmaxL(w)=∏i=1nP(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∑nlogP(yi∣xi;w)=i=1∑nyilogP(yi=1∣xi;w)+(1−yi)log(1−P(yi=1∣xi;w))=i=1∑nyilog1−P(yi=1∣xi;w)P(yi=1∣xi;w)+log(1−P(yi=1∣xi;w))=i=1∑nyixiw−log(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}_iend{aligned} ∂w∂logL(w)=i=1∑nyixi−1+exiwexiwxi=i=1∑n(yi−1+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-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小时内删除。
留言与评论(共有 0 条评论) |