模型与函数构造
之前讲到,模型是由机器学习决定参数值的函数,通过训练,机器可以找出最好的一组参数使得函数的输出最优。常见的模型有线性模型,指数模型,对数模型等。在线性模型中,w和b是可学习的参数;在指数模型中,指数的底a和系数c是可学习的参数;在对数模型中,对数的底b和常数c是可学习的参数。
现实生活中有很多模型来自领域知识,比如经济学中的供需关系函数,生物医学中的药物反应模型等。这些模型给了我们目标函数的框架,我们只需要交给机器根据训练数据学习优化超参数即可。
很多时候,我们不知道目标函数具体长什么样子(是指数函数还是幂函数),甚至有些任务的目标函数过于复杂:比如前面提到的语音识别任务,需要输入一段音频转出文字,这样的函数框架不是我们可以设计的。类似地,图像分类,大语言模型对话的函数都很难设计,如ChatGPT4有1750亿参数,这么大的“函数”远超人类的想象力。
这里介绍一个理论:分段线性曲线可以连续逼近任何曲线
如此,当我们面对难以描述的曲线的时候,不妨给出一组线性函数,让机器通过调节超参数去学习拟合那条不知姓名的曲线。
看下面的例子,比如我们要拟合红色的曲线,我们可以给出3条折线(也叫hard sigmoid函数)和1条水平线(偏置),让机器调节这些线的水平位置,垂直高度,斜率等参数就可以逐渐逼近到红色线的位置。
hard sigmoid函数由于拐点不可微分,导致梯度下降法受阻,故而我们采用更加平滑的sigmoid函数替代。
sigmoid函数公式为 ,通过调整参数可以改变形状,从而组合出丰富的函数。
我们可以按以下步骤构建复杂函数: