- 学生和研究者:模型的建立与训练
学生和研究者:模型的建立与训练
如果你是一个初学机器学习/深度学习的学生,你可能已经啃完了Andrew Ng的机器学习公开课或者斯坦福的 UFIDL Tutorial ,亦或是正在上学校里的深度学习课程。你可能也已经了解了链式求导法则和梯度下降法,知道了若干种损失函数,并且对卷积神经网络(CNN)、循环神经网络(RNN)和强化学习的理论也有了一些大致的认识。然而——你依然不知道这些模型在计算机中具体要如何实现。这时,你希望能有一个程序库,帮助你把书本上的公式和算法运用于实践。
具体而言,以最常见的有监督学习(supervised learning)为例。假设你已经掌握了一个模型 (x、y为输入和输出,
为模型参数),确定了一个损失函数
,并获得了一批数据
和相对应的标签
。这时,你会希望有一个程序库,帮助你实现下列事情:
用计算机程序表示出向量、矩阵和张量等数学概念,并方便地进行运算;
方便地建立模型
和损失函数
。给定输入
,对应的标签
和当前迭代轮的参数值
,能够方便地计算出模型预测值
,并计算损失函数的值
;
自动将损失函数
求已知
、
、
时对模型参数
的偏导数值,即计算
,无需人工推导求导结果(这意味着,这个程序库需要支持某种意义上的“符号计算”,表现在能够记录下运算的全过程,这样才能根据链式法则进行反向求导);
根据所求出的偏导数
的值,方便地调用一些优化方法更新当前迭代轮的模型参数
,得到下一迭代轮的模型参数
(比如梯度下降法,
,
为学习率)。
更抽象一些地说,这个你所希望的程序库需要能做到:
数学概念和运算的程序化表达;
对任意可导函数
,求在自变量
给定时的梯度
(“符号计算”的能力)。