前言:对于深度学习入门,专门开展一个系列的blog来记录自己的学习以及代码的编写情况,在学习和成长的同时也将经验与问题分享出来,希望对各位能有帮助。
方向:深度学习基础知识
基础:斯坦福CS231
主题:线性回归-1+代码实现
1、线性回归?
个人理解的线性回归就是利用一条线性的函数去拟合得到一个预测的结果,例如预测股市的走势,预测房价的走势等等,局限性就在于线性回归只能通过线性函数拟合结果,灵活性与应用性较差。
线性回归
2、梯度下降?
这里我们定义了一个函数,叫做loss函数,loss函数用来衡量我们使用线性函数对结果拟合的“坏”的程度,简单的来说就是预测值和结果的差距,我们的loss值也就越大,而这个相对的大小则取决于我们使用的是什么样的loss函数。
而一旦我们得到了这个loss函数,我们就希望他能够越小越好,我们知道,在数学中,一个函数下降最快的方向也就是他的梯度方向(在简单的二元函数中我们也可以理解为偏导数方向),所以这里我们对“参数”w和“参数”x进行求导,并让他减去自己所求得得导数(这里我们对导数乘上了一个较小的“数”,这是因为如果导数正向过大或者负向过大都有可能导致参数变化过于剧烈不便于我们寻找最佳的“解”)。
梯度下降
3、代码实现
这里我们使用的loss函数为:
代码实现如下:
def compute_error_for_line_given_points(b, w, points): #points为2×100的数组 totalError = 0 #初始化loss值为0 for i in range(0,len(points)): #从0到points长度(100)迭代累加loss x = points[i, 0] #使用numpy工具,等同于points[i][0] y = points[i, 1] #这里我们是有100组输入与输出,将其构成了2×100的矩阵输入 totalError += (y - (w * x + b)) ** 2 #使用loss函数计算loss值 return totalError / float(len(points))
到这里我们的loss值就计算完毕了。