神经网络的参数和超参数

整理并翻译自吴恩达深度学习视频: https://mooc.study.163.com/learn/2001281002?tid=2001392029#/learn/content?type=detail&id=2001702026

神经网络的参数和超参数

参数(parameter)

W [ 1 ] , b [ 1 ] , W [ 2 ] , b [ 2 ] , W [ 3 ] , b [ 3 ] . . . W^{[1]}, b^{[1]}, W^{[2]}, b^{[2]}, W^{[3]}, b^{[3]}... W[1],b[1],W[2],b[2],W[3],b[3]...

超参数 hyperparameter

中文英文
学习速率learning rate α \alpha α
迭代次数#iterations
隐藏层层数#hidden layers L
隐藏单元数#hidden units n [ 1 ] , n [ 2 ] , . . . n^{[1]},n^{[2]},... n[1],n[2],...
激活函数的选择choice of activation function

除此之外,还有mometum、minibatch size、various forms of regularization parameters。

#在学术上表示numbers of,即…的数量。

说明

超参数只是一种命名,之所以称之为超参数,是因为这些参数(hyperparameter)在某种程度上决定了最终得到的W和b参数(parameter)。超字并没有什么特别深刻的含义。

那么在训练网络时如何选择这些超参数呢 ?

你可能不得不尝试一系列可能适用于你的应用的超参数配置,不断尝试去取得最佳结果。

系统性的去尝试超参数的方法,稍后补充。

这是深度学习还需要进步的地方。

大家会开玩笑说什么佛系调参,差不多就是这个意思。

### 神经网络中的可调参数超参数:区别及作用 #### 1. 可调参数 神经网络可调参数是指在训练过程中通过优化算法(如梯度下降)调整的模型内部权重偏置。这些参数直接影响模型对输入数据的映射能力,从而决定模型的预测性能。具体来说: - **权重(Weights)**:连接神经元之间的数值,表示输入特征的重要性。权重值越大,对应的输入特征对输出的影响越显著。 - **偏置(Bias)**:为每个神经元添加的一个常数项,允许模型更好地拟合数据,即使输入特征为零时也能产生非零输出[^4]。 这些参数在训练开始时通常被随机初始化,然后通过反向传播算法根据损失函数的梯度进行更新,以最小化预测误差。 #### 2. 超参数 超参数是预先设定且不直接参与训练过程的参数,它们控制模型的学习行为结构设计。常见的超参数包括但不限于以下内容: - **学习率(Learning Rate)**:决定每次参数更新的步长大小。学习率过大会导致训练不稳定,而过小则可能使收敛速度变慢[^5]。 - **批量大小(Batch Size)**:每次迭代中使用的样本数量。较大的批量大小可以提供更稳定的梯度估计,但需要更多的内存资源[^3]。 - **隐藏层数量(Number of Hidden Layers)**:决定网络的深度。更深的网络能够捕捉更复杂的模式,但也更容易出现过拟合问题[^1]。 - **每层神经元数量(Number of Neurons per Layer)**:影响模型的容量表达能力。过多的神经元可能导致过拟合,而过少则可能欠拟合[^1]。 - **正则化参数(Regularization Parameters)**:例如 L2 正则化中的 λ 值,用于防止模型过拟合[^5]。 #### 3. 区别与作用 - **区别**:可调参数是在训练过程中动态调整的模型内部变量,而超参数是人为设定的外部配置,决定了模型的架构学习策略。 - **作用**: - 可调参数的作用是通过优化算法找到最佳的权重偏置组合,以实现对目标函数的最小化。 - 超参数的作用是调节模型的复杂度、学习效率泛化能力,从而间接影响最终的训练效果。 #### 示例代码:设置超参数并训练模型 以下是一个简单的神经网络训练示例,展示了如何设置超参数并调整可调参数: ```python import tensorflow as tf # 定义超参数 learning_rate = 0.01 batch_size = 32 num_epochs = 10 hidden_units = [128, 64] # 构建模型 model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(hidden_units[0], activation='relu'), tf.keras.layers.Dense(hidden_units[1], activation='relu'), tf.keras.layers.Dense(10) ]) # 编译模型 model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=learning_rate), loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) # 训练模型 model.fit(train_dataset, epochs=num_epochs, batch_size=batch_size) ``` ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值