Machine Learning Chinese NLP :::: Cost Function Intuition I - Chad Salinas ::: Data Scientist
Life and times of Chad Salinas
Chad Salinas, golf caddy, data scientist, chad rPubs, recovering chess addict, daddy caddy
1141
post-template-default,single,single-post,postid-1141,single-format-standard,qode-listing-1.0.1,qode-social-login-1.0,qode-news-1.0,qode-quick-links-1.0,qode-restaurant-1.0,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-12.0.1,qode-theme-bridge,bridge,wpb-js-composer js-comp-ver-5.4.2,vc_responsive

Machine Learning Chinese NLP :::: Cost Function Intuition I

Cost Function Intuition I 

 
在上一个视频中 我们给了代价函数一个数学上的定义 
在这个视频里 让我们通过一些例子来获取一些直观的感受 
看看代价函数到底是在干什么 回顾一下 
这是我们上次所讲过的内容 我们想找一条直线来拟合我们的数据 
所以我们用 θ0 θ1 等参数 得到了这个假设 
而且通过选择不同的参数 我们会得到不同的直线拟合

所以拟合出的数据就像这样 然后我们还有一个代价函数 
这就是我们的优化目标 在这个视频里 为了更好地 
将代价函数可视化 我将使用一个简化的假设函数 
就是右边这个函数 然后我将会用这个简化的假设 
也就是 θ1*x 我们可以将这个函数看成是 
把 θ0 设为0 所以我只有一个参数 也就是 θ1 
代价函数看起来与之前的很像 唯一的区别是现在 h(x) 等于 
θ1*x 只有一个参数 θ1 所以我的 
优化目标是将 J(θ1) 最小化 用图形来表示就是 
如果 θ0 等于零 也就意味这我们选择的假设函数 
会经过原点 也就是经过坐标 (0,0) 
通过利用简化的假设得到的代价函数 我们可以试着更好地理解 
代价函数这个概念 我们要理解的是这两个重要的函数 
第一个是假设函数 第二个是代价函数 
注意这个假设函数 h(x) 对于一个固定的 θ1 这是一个关于 x 的函数 
所以这个假设函数就是一个关于 x 这个房子大小的函数 
与此不同的是 代价函数 J 是一个关于参数 θ1 的函数 
而 θ1 控制着这条直线的斜率 现在我们把这写函数都画出来 
试着更好地理解它们 我们从假设函数开始 
比如说这里是我的训练样本 它包含了三个点 (1,1) (2,2) 和 (3,3) 
现在我们选择一个值 θ1 所以当 θ1 等于1 如果这是我选择的 θ1 
那么我的假设函数看起来就会像是这条直线 
我将要指出的是 当我描绘出我的假设函数 X轴 
我的横轴被标定为X轴 X轴是表示房子大小的量 
现在暂时把 θ1 定为1 我想要做的就是 
算出在 θ1 等于 1 的时候 J(θ1) 等于多少 所以我们 
按照这个思路来计算代价函数的大小 和之前一样 
代价函数定义如下 是吧 
对这个误差平方项进行求和 这就等于 
这样一个形式 简化以后就等于 
三个0的平方和 当然还是0 
现在 在代价函数里 我们发现所有这些值都等于0 
因为对于我所选定的这三个训练样本 ( 1 ,1 ) (2,2) 和 (3,3) 
如果 θ1 等于 1 那么 h(x(i)) 就会正好等于 y(i) 让我把这个写得好一点 
对吧 所以 h(x) – y 所有的这些值都会等于零 
这也就是为什么 J(1) 等于零 所以 我们现在知道了 J(1) 是0 
让我把这个画出来 我将要在屏幕右边画出我的代价函数 J 
要注意的是 因为我的代价函数是关于参数 θ1 的函数 
当我描绘我的代价函数时 X轴就是 θ1 
现在我有 J(1) 等于零 让我们继续把函数画出来 
结果我们会得到这样一个点 现在我们来看其它一些样本 θ1 可以被设定为 
某个范围内各种可能的取值 所以 θ1 可以取负数 
0 或者正数 所以如果 θ1 等于0.5会发生什么呢 
继续把它画出来 现在要把 θ1 设为0.5 在这个条件下 
我的假设函数看起来就是这样 这条线的斜率等于0.5 
现在让我们计算 J(0.5) 所以这将会等于1除以2m 乘以那一块 
其实我们不难发现后面的求和 就是这条线段的高度的平方 
加上这条线段高度的平方 
再加上这条线段高度的平方 三者求和 对吗? 
就是 y(i) 与预测值 h(x(i)) 的差 
对吗 所以第一个样本将会是0.5减去1的平方 
因为我的假设函数预测的值是0.5 而实际值则是1 
第二个样本 我得到的是1减去2的平方 因为我的假设函数预测的值是1 
但是实际房价是2 最后 加上 1.5减去3的平方 
那么这就等于1除以2乘以3 因为训练样本有三个点所以 m 等于3 
对吧 然后乘以括号里的内容 简化后就是3.5 
所以这就等于3.5除以6 也就约等于0.68 
让我们把这个点画出来 
不好意思 有一个计算错误 这实际上该是0.58 所以我们把点画出来 大约会是在这里 
对吗 现在 让我们再多做一个点 让我们试试θ1等于0 
J(0) 会等于多少呢 如果θ1等于0 那么 h(x) 
就会等于一条水平的线 对了 就会像这样是水平的 
所以 测出这些误差 我们将会得到 J(0) 等于 
1除以 2m 乘以1的平方 加上2的平方 加上3的平方 也就是 
1除以6乘以14 也就是2.3左右 所以让我们接着把这个点也画出来 
所以这个点最后是2.3 当然我们可以接着设定 θ1 等于别的值 进行计算 
你也可以把 θ1 设定成一个负数 
所以如果 θ1 是负数 那么 h(x) 将会等于 
打个比方说 -0.5 乘以x 然后 θ1 就是 -0.5 那么这将会 
对应着一个斜率为-0.5的假设函数 而且你可以 
继续计算这些误差 结果你会发现 对于0.5 
结果会是非常大的误差 最后会得到一个较大的数值 类似于5.25 
等等 对于不同的 θ1 你可以计算出这些对应的值 对吗 
结果你会发现 你算出来的这些值 你得到一条这样的曲线 
通过计算这些值 你可以慢慢地得到这条线 
这就是 J(θ) 的样子了 我们来回顾一下 
任何一个 θ1 的取值对应着一个不同的 
假设函数 或者说对应着左边一条不同的拟合直线 对于任意的θ1 
你可以算出一个不同的 J(θ1) 的取值 
举个例子 你知道的 θ1 等于1时对应着穿过这些数据的这条直线 
当 θ1 等于0.5 也就是这个玫红色的点 
也许对应着这条线 然后 θ1 等于0 也就是蓝色的这个点 对应着 
这条水平的线 对吧 所以对于任意一个 θ1 的取值 我们会得到 
一个不同的 J(θ1) 而且我们可以利用这些来描出右边的这条曲线 
现在你还记得 学习算法的优化目标 
是我们想找到一个 θ1 的值 来将 J(θ1) 最小化 
对吗 这是我们线性回归的目标函数 嗯 
看这条曲线 让 J(θ1) 最小化的值 是 θ1 等于1 
然后你看 这个确实就对应着最佳的通过了数据点的拟合直线 
这条直线就是由 θ1=1 的设定而得到的 然后 对于这个特定的训练样本 
我们最后能够完美地拟合 这就是为什么最小化 J(θ1) 
对应着寻找一个最佳拟合直线的目标 
总结一下 在这个视频里 我们看到了一些图形 来理解代价函数 
要做到这个 我们简化了算法 让这个函数只有一个参数 θ1 
也就是说我们把 θ0 设定为0 在下一个视频里 
我们将回到原来的问题的公式 然后看一些 
带有 θ0 和 θ1 的图形 也就是说不把 θ0 设置为0了 
希望这会让你更好地理解在原来的线性回归公式里 
代价函数 J 的意义 

Any programming problem can be solved by adding a level of indirection.

– David J. Wheeler

No Comments

Sorry, the comment form is closed at this time.