上一篇文章讲了假设函数和损失函数的基本定义,这篇文章讲讲它们在实际问题中到底是怎么样的。
假设函数
虽说是实际问题,但为了方便理解,还是把具体问题简化了。
首先,在实际问题中,数据不可能只有寥寥几条,肯定会有很多条数据。还是举预测房价这个例子,肯定会有很多的房屋大小,来预测很多的房屋价格,最后利用这些对应的数据,可以在二维坐标系上作出图像。这就涉及到了一个概念 —— 数据集(dataset),每个数据集都会有很多数据,这个“很多”少说成百上千条,多则千万条。
其次,在上一篇文章中,我写了
h(x) = ax
这在实际问题中也是不太可能的,拿房价来说,可能当房子大小由比较小到比较大的时候,价格上升的比较快,但当房子已经很大的时候,即使房子大小的增长速率和之前一样,它的价格增长速率也会比之前要低许多,这就不是一个线性关系了。而且,决定房子价格的因素有很多,比如卧室数量,地理位置等等,很多因素一起决定了价格,这就导致 y 并不是简答的等于 ax,而是等于
ax1 + bx2 + cx3 ···
损失函数
首先,上一篇文章中我写道
J = | y - y_ |
这个其实没什么大问题,但由于我们的数据是一个数据集,所以这里的 J,y,y_ 都有很多组,所以最后的损失函数应该是这个数据集中所有损失函数的平均损失函数。
其次,由于损失函数刻画了预测结果和实际结果的差别,所以我们当然希望损失函数越小越好。对于一个数据集的所有数据,实际结果的平均值是确定的,如果预测结果 h(x) 的平均值也是确定的,那么损失函数的平均值就是确定的,只有改变 h(x) 中的参数,才能改变最终的损失函数,因此,我们的目标就变成了改变参数的大小来减小损失函数的大小。所以,损失函数 J 的自变量是 h(x) 中的参数 a,b,c ··· 。所以有
J(a,b,c···) = | y - y_ |
小结
很多理论都是这样,要考在虑实际问题中的应用,慢慢完善,理论也就变得越来越复杂了,但其实如果仔细根据实际问题慢慢思考,是很容易明白理论的每一步的推导过程的。这篇文章其实只是把假设函数和损失函数在实际问题中的应用抽象的讲了一下,具体的内容会在下一篇文章讲。