深度学习——预训练

深度网络存在问题:

网络越深,需要的训练样本数越多。若用监督则需大量标注样本,不然小规模样本容易造成过拟合(深层网络意味着特征比较多,机器学习里面临多特征:1、多样本 2、规则化 3、特征选择);

多层神经网络参数优化是个高阶非凸优化问题,常收敛较差的局部解

梯度扩散问题,BP算法计算出的梯度随着深度向前而显著下降,导致前面网络参数贡献很小,更新速度慢。

解决方法:

逐层贪婪训练,无监督预训练(unsupervised pre-training)即训练网络的第一个隐藏层,再训练第二个…最后用这些训练好的网络参数值作为整体网络参数的初始值。

1、无监督学习——->参数初始值;

2、监督学习——->fine-tuning,即训练有标注样本。

经过预训练最终能得到比较好的局部最优解。

fine-tuning对神经网络权值改变很小,似乎权值被困在某个局部区域。而且第一层改变最少,第二层次之…最后一层最大。


### 深度学习预训练权重的概念解释 #### 什么是预训练权重? 预训练权重是指通过大规模数据集(通常是公开的标准数据集,如ImageNet)预先训练得到的神经网络模型参数。这些权重已经被优化以适应特定的任务或领域,在后续的应用场景中可以直接加载并用于初始化新的模型[^1]。 #### 使用预训练权重的意义 使用预训练权重的核心目的是利用已有的知识加速新任务的学习过程。由于大型数据集通常包含了丰富的特征信息,因此由其训练出的模型能够很好地捕捉到通用的模式和特性。当面对较小规模或者标注不足的新数据时,借助预训练权重可以显著提升性能,并减少计算资源的需求[^2]。 #### 迁移学习中的角色 在迁移学习框架下,预训练权重扮演着至关重要的基础作用。具体来说,它允许我们将一个源域上获得的知识迁移到目标域当中去解决问题。例如,在计算机视觉领域里,先在一个庞大的图像数据库上面完成初步训练之后再针对具体的业务需求做进一步调整——即所谓的“微调”阶段[^3]。 #### 实际案例分析 - VGG16 的应用 VGG-16 是一种经典的卷积神经网络架构,最初是在 ImageNet 数据竞赛中取得优异成绩的设计方案之一。对于那些希望快速搭建起高效能图像识别系统的开发者而言,直接采用经过充分验证过的 VGG-16 权重文件作为起点是非常明智的选择。这样不仅可以省去漫长而昂贵的时间成本,而且还能立即享受到高质量的结果表现[^4]。 ```python from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input model = VGG16(weights='imagenet', include_top=False) def predict_image(img_path): img = load_img(img_path, target_size=(224, 224)) x = img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) features = model.predict(x) return decode_predictions(features)[0][0] print(predict_image('example.jpg')) ``` 上述代码片段展示了如何轻松地加载 VGG16 并对其进行简单的预测操作。这里的关键在于 `weights='imagenet'` 参数指定了我们要使用的正是官方发布的 Imagenet 上面训练完毕后的版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值