Recurrent Neural Network(李宏毅)机器学习 2023 Spring HW2 (Boss Baseline)

1. Recurrent Neural Network 介绍

1.1 Recurrent Neural Network (RNN)

RNN是一种适合处理序列数据的神经网络,可以通过隐藏层状态保存序列信息。它通过循环结构更新隐藏状态,捕获时间序列的依赖关系。

h_t = f(W_h h_{t-1} + W_x x_t + b) \\

其中:

  • h_t ​:当前时间步隐藏状态

  • h_{t-1} ​:上一时间步隐藏状态

  • x_t ​:当前输入

  • W_h,W_x,b :权重和偏置

  • f:激活函数(如tanh或ReLU)

Recurrent Neural Network (source: https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/RNN%20(v2).pdf)标题

1.2 Long Short-Term Memory (LSTM)

LSTM是简单RNN模块的改进版本,解决了普通RNN的梯度消失问题。它引入了“门”机制(输入门、遗忘门、输出门)和细胞状态,用于长期依赖建模。

遗忘门:f_t = \sigma(W_f [h_{t-1}, x_t] + b_f)

输入门: i_t = \sigma(W_i [h_{t-1}, x_t] + b_i), \quad \tilde{C}_t = \tanh(W_C [h_{t-1}, x_t] + b_C)

Cell 状态更新: C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t

输出门: o_t = \sigma(W_o [h_{t-1}, x_t] + b_o), \quad h_t = o_t \odot \tanh(C_t)

其中: \sigma 是Sigmoid函数, \odot 表示逐元素乘法。

标题LSTM (source: https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/RNN%20(v2).pdf)

标题LSTM Detail (source: https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/RNN%20(v2).pdf)

1.3 Bidirectional LSTM (BiLSTM)

BiLSTM是LSTM的扩展,结合了前向和后向两个方向的信息,适合捕获序列的全局上下文。它利用两个LSTM:前向(从左到右)和后向(从右到左),并在输出将前向和后向的隐藏状态拼接

h_t = [\overrightarrow{h_t}; \overleftarrow{h_t}] \\

其中 \overrightarrow{h_t} ​​ 和 \overleftarrow{h_t} 分别表示前向和后向隐藏状态。

标Bidirectional RNN (source: https://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/Lecture/RNN%20(v2).pdf)题

2. Homework Results and Analysis

HW2 是一个多分类任务,我们将根据语音进行逐帧的音素预测。音素是语言中最小的语音单位,可以用来区分不同的单词。音素与字母不同,它们代表的是发音。在书写中,一个音素可能对应多个字母或字母组合。

task introduction (source: https://speech.ee.ntu.edu.tw/~hylee/ml/ml2023-course-data/HW02+%E8%81%BD%E6%B8%AC.pdf)标题

音频信号将被划分为重叠的帧,每帧持续 25 毫秒,相邻帧之间的间隔为 10 毫秒。

Acoustic Features (source: https://speech.ee.ntu.ed
### 李宏毅 HW2 中 Hessian Matrix 的计算与应用 在李宏毅机器学习课程中,Hessian Matrix 是一个重要概念,在优化过程中用于分析函数曲率特性。具体来说,Hessian 矩阵 \(H_{ij}\) 表示损失函数 L 关于参数 \(\theta_i\) 和 \(\theta_j\) 的二阶偏导数[^1]。 对于高维空间中的复杂模型而言,直接求解完整的 Hessian 矩阵可能非常困难且耗时。然而,在某些特定情况下(如鞍点检测),仅需关注部分特征值及其对应方向上的行为即可有效解决问题[^3]。 当处理局部极小值或鞍点问题时,可以通过检查 Hessian 矩阵的特征值得到有用的信息。如果存在负特征值,则表明当前点不是全局最优解;此时可以沿着该负特征值所指示的方向调整权重向量 w ,从而逃离次优区域并继续寻优过程。 为了实现这一点,在实际编程实践中通常会采用数值方法近似估计 Hessian 或其逆矩阵,而不是显式构建整个矩阵。例如: ```python import numpy as np def compute_hessian(f, x, epsilon=1e-5): """ 使用有限差分法估算给定点处的目标函数 f(x) 的 Hessian 矩阵 参数: f (callable): 目标函数 x (np.ndarray): 输入变量数组 epsilon (float): 微扰大小,默认为 1e-5 返回: np.ndarray: 近似的 Hessian 矩阵 """ n = len(x) hessian = np.zeros((n,n)) for i in range(n): for j in range(i,n): dx = np.zeros_like(x).astype(float) dy = np.zeros_like(x).astype(float) dx[i],dx[j]=epsilon,0. dy[i],dy[j]=0.,epsilon f_plus_x=f(x+dx)+f(x-dx)-2*f(x) f_plus_y=f(x+dy)+f(x-dy)-2*f(x) if i==j:hessian[i,j]=(f_plus_x/(epsilon**2))[0] else: cross_term=(f(x+dx+dy)+f(x-dx-dy)\ -f(x+dx-dy)-f(x-dx+dy))/(4*epsilon**2) hessian[i,j]=cross_term[0] hessian[j,i]=cross_term[0] return hessian ``` 此代码片段展示了如何利用有限差分法来估算任意可微目标函数在其定义域内的某一点附近的 Hessian 矩阵。这种方法虽然简单易懂,但在面对大规模数据集或者深层神经网络训练场景下可能会遇到性能瓶颈以及精度不足等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值