好的,咱们来聊聊深度学习里的一个挺有意思的事儿——用预训练的卷积神经网络(简称ConvNet)来干啥。你知道吗,有时候我们不用从头开始训练一个大网络,而是可以用别人已经训练好的网络来帮我们提取特征。比如,AlexNet这个网络就特别有用。如果我们把它最后一层去掉,就可以拿它来给新的图片提取特征。这样做之后,每张图都能变成一个4096维的特征向量,这个向量我们就叫它CNN代码。要是原来的网络用了ReLU激活函数,那提取出来的特征也要经过ReLU处理,这样效果才好。
但是,光用它来提取特征还不够爽,有时候我们还可以对这个网络进行“微调”。这就像是我们把别人的车借过来,然后稍微改一改让它更适合我们的路。也就是说,我们不仅换掉原来那个分类器,还会继续用反向传播来调整网络里的权重,让它对我们手头的数据更合适。微调可以是整个网络一起调,也可以只调后面几层,因为前面的层通常学的是比较通用的东西,后面的层学的可能是更专门的东西,跟原来训练的数据集特别相关,所以只调后面几层可以防止过拟合。
现在训练一个厉害的网络要花很多时间和钱,所以大家通常会共享那些已经训练好的模型。比如说,有个叫Caffe的工具箱里面有个“模型动物园”,大家可以在这里分享和下载各种网络的权重。这样一来,大家都能省点儿事,也更容易合作研究。你看,这样的做法多好啊,大家都受益!