跳转至

4

【1】构建模型使得预测值与真实值的误差最小常用向量2-范数度量,求解模型过程中需要计算梯度,求梯度:

\(\begin{array} { r } { f ( A ) = \frac { 1 } { 2 } | | A x + b - y | | _ { 2 } ^ { 2 } } \end{array}\) ,求 \(\frac { \partial f } { \partial A }\)

\(\begin{array} { r } { f ( x ) = \frac { 1 } { 2 } \big | \big | A x + b - y \big | \big | _ { 2 } ^ { 2 } } \end{array}\) ,求 \(\frac { \partial f } { \partial x }\)

其中 \(A \in \mathbb { R } ^ { m \times n } , x \in \mathbb { R } ^ { n } , b , y \in \mathbb { R } ^ { m }\)

【2】利用迹微分法求解

\[ \frac {\partial \operatorname {t r} (W ^ {- 1})}{\partial W} \]

\(W \in \mathbb { R } ^ { m \times m }\)

【3】二次型是数据分析中常用函数,求

\[ \frac {\partial x ^ {T} A x}{\partial x}, \frac {\partial x ^ {T} A x}{\partial A} \]

\(A \in \mathbb { R } ^ { m \times m } , x \in \mathbb { R } ^ { m }\)

【4】

定义 \(( \exp ( z ) ) _ { i } = \exp ( z _ { i } ) , ( \ln ( z ) ) _ { i } = \ln ( z _ { i } )\) ,则

\[ f (z) = \frac {\exp (z)}{\mathbf {1} ^ {T} \exp (z)} \]

成为Softmax函数,如果 \(q = f ( z ) , J = - p ^ { T } \ln ( q )\) ,其中 \(p , q , z \in \mathbb { R } ^ { n }\) ,并且 \({ \bf 1 } ^ { T } p = 1\) ,则:

1.证明: \(\begin{array} { r } { \frac { \partial J } { \partial z } = q - p } \end{array}\)

2.若 \(z = W x\) ,其中 \(\begin{array} { r } { W \in \mathbb { R } ^ { n \times m } , x \in \mathbb { R } ^ { m } , \frac { \partial J } { \partial W } = ( q - p ) x ^ { T } } \end{array}\) 是否成立。

【5】

以下内容是利用极大似然估计求解多元正态分布模型的关键步骤:

\[ L = - \frac {N d}{2} \ln (2 \pi) - \frac {N}{2} \ln | \Sigma | - \frac {1}{2} \sum_ {t} \left(x _ {t} - \mu\right) ^ {T} \Sigma^ {- 1} \left(x _ {t} - \mu\right) \]

\(L\) 是对数似然, \(N\) 为样本数, \(d\) 为样本维数, \(\Sigma \in \mathbb { R } ^ { d \times d }\) 为协方差矩阵(对称矩阵), \(\boldsymbol { \mu } \in \mathbb { R } ^ { d }\) 为期望向量。

1.求 \(\frac { \partial L } { \partial \mu }\)

2.当 \(\begin{array} { r } { \mu = \frac { 1 } { N } \sum _ { t } x _ { t } } \end{array}\) 使,求 \(\frac { \partial L } { \partial \Sigma }\) ,并求使 \(\begin{array} { r } { \frac { \partial L } { \partial \Sigma } = 0 } \end{array}\) 成立的 \(\Sigma\)

【6】

\[ \frac {\partial | X^ {k} |}{\partial X} \]

其中 $ { X } \in \mathbb { R } ^ { m \times m }$ 为可逆矩阵。

【7】

\[ \frac {\partial \operatorname {T r} (A X B X ^ {T} C)}{\partial X} \]

其中 \(A \in \mathbb { R } ^ { m \times n } , X \in \mathbb { R } ^ { n \times k } , B \in \mathbb { R } ^ { k \times k } , C \in \mathbb { R } ^ { n \times m }\)

【8】

求激活函数

\[ \sigma (x) = \frac {1}{1 + e ^ {- x}} \]

的导数

【9】

\[ \frac {\partial}{\partial x} \mathrm {e x p} \left\{- \frac {1}{2 | | \sigma | | _ {2} ^ {2}} | | x - \mu | | _ {2} ^ {2} \right\} \]

其中 \(x , \mu , \sigma \in \mathbb { R } ^ { n }\)

【10】

阅读以下代码,填写更新梯度部分的代码。(提交时,需要提交补全的代码,以及最后10次输出的截图)

实现代码:

import numpy as np

N, D_in, H, D_out = 64, 1000, 100, 10
# 随机创建一些训练数据
x = np.random.randn(N, D_in)
y = np.random.randn(N, D_out)
w1 = np.random.randn(D_in, H)
w2 = np.random.randn(H, D_out)
learning_rate = 1e-6
for it in range(500):
    # Forward pass
    h = x.dot(w1)  # N * H
    h_relu = np.maximum(h, 0)  # N * H
    y_pred = h_relu.dot(w2)  # N * D_out
    # compute loss
    loss = np.square(y_pred - y).sum()
    print(it, loss)
    # Backward pass
    # compute the gradient
    grad_y_pred = (y_pred - y)
    grad_w2 = h_relu.T.dot(grad_y_pred)
    grad_h_relu = grad_y_pred.dot(w2.T)
    grad_h = grad_h_relu.copy()
    grad_h[h < 0] = 0
    grad_w1 = x.T.dot(grad_h)
    w1 -= learning_rate * grad_w1
    w2 -= learning_rate * grad_w2

输出结果(最后10次循环):