东营市建设网站,石家庄网站搭建公司,wordpress aliyun-oss,网站上放百度地图元学习通俗的来说#xff0c;就是去学习如何学习#xff08;Learning to learn#xff09;,掌握学习的方法#xff0c;有时候掌握学习的方法比刻苦学习更重要#xff01;
下面我们进行详细讲解
1. 从传统机器学习到元学习
传统的机器学中#xff0c;我们选择一个算法就是去学习如何学习Learning to learn,掌握学习的方法有时候掌握学习的方法比刻苦学习更重要
下面我们进行详细讲解
1. 从传统机器学习到元学习
传统的机器学中我们选择一个算法F把数据放进去学出来一组参数θ在测试数据上用得出结果。如图 基于这种思想我们能不能学F呢
当然可以了现在 我们的目标就是去学习F 如上图A就是元学习算法ω就是算法中可学的参数称为元知识得到最适用的F之后再把数据放进去得到f最终输出结果.
那现在有个问题了
上述图中只有一个任务就是分清楚猫还是狗那遇到多任务时该怎么办就是让算法不仅仅可以分猫狗还能分苹果橘子自行车和汽车等。如下图所示 如果让F都能做这时ω就是对所有分类任务都比较好的算法得到后可以让他做新的任务分手机和电脑得到模型fθ这时该模型就有分辨手机和电脑的能力了。
单任务元学习目标是找到一个最适合该任务的算法而多任务元学习是找到最适合所有任务的算法并且这个算法能够处理新的任务。
1.1 怎么学算法参数ω 呢
传统的机器学习如何学习参数θ呢
如下图先建立一个模型把“猫”输入不断进行反馈 第二步定义损失函数如下图用交叉熵来定义也就是说通过预测的概率和真实的标签对比预测的概率越低分类越错惩罚就越高惩罚越高的话下一次分错的概率就越低通过这样的方式学习。 最后把损失加起来得到总的损失求梯度目的是让他下一次不要犯错了根据不断的优化迭代得到∗θ∗这就是学出来的模型参数。 上述步骤是求模型的参数那么算法的参数怎么学呢
其实和求模型的参数一模一样本质没有区别
因为模型的参数是想要让它在数据上更通用更一般化在元学习里只不过是把上述的数据换成了任务使其在没见过的任务上也做的好怎么做呢如下图 给出task1,task2,得到初始化算法Fω根据Fω测试得到损失然后加起来得到最终损失()L(ϕ) 。
与传统就机器学习相比传统的机器学习损失是在训练样本上做的而元学习是在测试样本做的。但是机器学习中不可以用测试数据用于训练怎么办
将训练数据分为支撑集Support set优化模型参数θ和查询集Query set优化算法参数ω如果ω不好那θ也一定不好。对于测试数据也同样分为支撑集和查询集但是测试数据的查询集不参与学习 那么它的流程是什么样的呢如下
先有一个元学习算法元学习算法给你一个支撑集之后会得到一个通用的模型这个模型在查询集上评估一下看看好不好最后得到一个ω再用这个算法在测试集上的支撑集上更新得到一个模型再用这个模型在查询集上做最终的预测。
训练和测试集在元学习中称为元训练和元测试。公式表示如下 元训练
如上图它分为内层和外层优化外层用于学算法参数内层用于学模型参数内层是给出ω学出∗θ∗把∗θ∗拿到查询集中验证学的怎么样如果不好说明ω不好通过loss去更新∗ω∗不断迭代。
元测试
已经学到最好的算法后在测试集的支撑集上去学一个模型最终∗θ∗就是测试模型。
这个元知识可以是什么呢 可以使非常多的东西例如超参数初始化的模型参数embeddings,模型架构损失函数等等。
2.元学习的分类
从方法论角度元学习分为三类基于优化基于模型基于度量。
展开讲讲
2.1 基于优化的元学习
ω在优化的过程中起作用它指导你去优化告诉你当前该用什么优化器相关的一篇论文如下 [1606.04474] Learning to learn by gradient descent by gradient descent (arxiv.org) 论文题目为用梯度下降的方式去学习如何用梯度下降学习
在元学习中通过元知识ω学习合适的优化函数公式如下 一个典型的基于优化的方法是MAML(Model-Agnostic Meta-Learning)
我们定义初始化参数为θ定义在第n个测试任务上训练之后的模型参数为^θ^n于是总的损失函数为()∑1(^)L(ϕ)∑n1Nln(θ^n)pre-training的损失函数是()∑1()L(ϕ)∑n1Nln(ϕ)直观上理解是MAML所评测的损失是在任务训练之后的测试loss而pre-training是直接在原有基础上求损失没有经过训练。 李宏毅老师举了一个非常形象的例子假设模型参数的ϕ和θ向量都是一维的MAML的初衷是找到一个不偏不倚的ϕ使得不管是在任务1的loss曲线1l1还是任务2的loss曲线2l2上都能下降到分别的全局最优。 而model pre-training的初衷是寻找一个从一开始就让所有任务的损失之和处于最小状态ϕ它并不保证所有任务都能训练到最好的^θ^n如上图所示2l2即收敛到局部最优。接下来李老师还做了一个很现实的比喻他把MAML比作选择读博意味着在意的是以后的表现如何即潜力而model pre-training就相当于选择毕业直接去互联网大厂工作马上就把所学技能兑现金钱在意的是当下表现如何。
总结起来MAML算法的框架其实很简单值得注意的是两个学习率ϵ和η所用的地方不同
对于采样出来的所有任务θi 在support set上计算梯度并更新参数−▽()θiθi−ϵ▽ϕl(ϕ)计算所有任务在query set上的损失之和()∑1()L(ϕ)∑n1Nln(θn)更新初始化参数⟵−▽()ϕ⟵ϕ−η▽ϕL(ϕ)
这是训练过程的流程所有的更新参数步骤都被限制在了一次即one-step但在用这个算法时即测试新任务的表现时可以更新更多次 任何模型都可以应用MAML
伪代码如下 应用:小样本学习
计算损失函数的方式不一样MAML不要求初始化的模型做的好要求迭代一步后的模型做得好预训练模型要求θ本身好
2.2基于模型的元学习
学一个模型通过元知识直接生成一个模型
有如下模型
记忆增强神经网络MANNMemory-Augmented Neural Network元网络MetaNet任务无关网络TAML简单神经注意元学习SNAILSimple Neural Attentive Meta-Learner
优点
系统内部动态的灵活性比基于度量的有更广泛的适用性
缺点
数据量大效果差监督任务不如基于度量的元学习任务间距离大不如基于优化的元学习 对网络结构依赖性强而网络结构的设计取决于解决任务的特性面对差异大的任务需要重新设计网络结构。
2.3 基于度量的元学习
学习有效的度量空间表示两个集合样本的相似性然后基于度量空间快速更新适应新任务中。
有如下模型
孪生网络SiamenseNet匹配网络MatchingNet注意循环比较ARCAttentive Recurrent Comparator
优点
任务量少时网络不需要进行特定任务的调整预测速度快基于相似性的预测思想简单
缺点
当训练和测试任务距离远方法无法把新任务信息吸收到网络权值中需要重新训练编码过程任务量大时成对比较计算昂贵且标签依赖强只适用于监督环境编码后的样本无法解释其意义简单地使用距离来表达相似性存在不合理的可能