[W5]神经网络的学习

代价函数

首先需要定义几个变量
L = 这个神经网络的总层数
sl= 第L层的单元数量
K = 输出层的单元数量
在神经网络中,我们的输出节点不止一个,我们用hΘ(x)k 来表示第k个输出
还记得逻辑回归的代价函数吗?

逻辑回归代价
对于神经网络来说,代价函数更加复杂一些
%e7%a5%9e%e7%bb%8f%e7%bd%91%e7%bb%9c%e4%bb%a3%e4%bb%b7%e5%87%bd%e6%95%b0

反向传播算法

反向传播算法是一种用于最小化代价函数的算法,正如我们在逻辑回归问题中使用的梯度下降算法一样。
引入一个新概念,error,

%e5%8f%8d%e5%90%91%e4%bc%a0%e6%92%aderror
代表了第l层第j个节点的误差值。
对于输出节点来说,我们可以通过下面公式计算error
%e8%be%93%e5%87%ba%e8%8a%82%e7%82%b9%e7%9a%84error
对于输出层之外的节点误差,我们可以用下面公式来计算
%e9%9d%9e%e8%be%93%e5%87%ba%e5%b1%82%e8%af%af%e5%b7%ae%e8%ae%a1%e7%ae%97[……]

Read more

[W4]神经网络的表示

非线性假设

前面我们提到过线性假设,我们可以理解为在这种情况下,我们的函数在平面上的图形是一条直线
而非线性假设的函数表达,并非直线,其中一个例子如下

qq%e6%88%aa%e5%9b%be20161121100237

我们大脑中的神经元

在我们大脑中,有许多叫做神经元的神奇的小东西,它有多个输入,多个输出,一个个的联结起来,构成了我们的神经系统。
神经网络算法为什么叫这个名字也是收到了这个东西的启发。

神经网络的表示

神经网络主要分三个层次,输入,中间,输出
一个简单的例子如下

qq%e6%88%aa%e5%9b%be20161121101842
那么,中间层(隐藏层)是怎样从输入层获取的呢?
见下图
qq%e6%88%aa%e5%9b%be20161121105609
其中Θ表示第几层,第几个参数,例如,(1)第一层,11第一行第一个参数,以此[……]

Read more

[W3]逻辑回归以及正则化

布尔分类

在这样的分类种,只有两种情况,0或者1,类似于计算机中常用的布尔变量

逻辑回归

前面已经提到过线性回归,那么什么是逻辑回归呢,其实是一个关于自然底数e的函数,其定义和图像如下图

qq%e6%88%aa%e5%9b%be20161118165037

决策边界

有了上面两个部分的介绍,我们可以引出一个新的概念——决策边界
当一个数大于我们的决策边界的时候,其结果就是1,否则为0,具体可以参看下图

qq%e6%88%aa%e5%9b%be20161118165734
在这里我们取决策边界为0.5

逻辑回归的代价函数

那么,对于逻辑回归问题,它的代价函数又是怎样的呢?我们需要分两种情况讨论
y = 1 以及 y = 0
具体见下图

qq%e6%88%aa%e5%9b%be20161118170228
上面的两种情况我们可以合并为同一个公式,如[……]

Read more

[W2]多参数线性回归相关问题

多参数线性回归

通过第一周的学习,我们知道了什么是单参数线性回归,那么多参数线性回归也就不难理解了,就是一个含多个参数的一阶函数,定义公式如下图

qq%e6%88%aa%e5%9b%be20161116173954
这个公式又可以表示为两个矩阵的乘积,如下图
qq%e6%88%aa%e5%9b%be20161116174219

代价函数

类似单变量的代价函数,同样是测量值与实际值之差的平方和的平均值

qq%e6%88%aa%e5%9b%be20161116174829

特征值的规范化

在课程原话中关于特征值的规范化是这样说的

We can speed up gradient descent by having each of our input values in roughly the same range. This is because θ[……]

Read more

[W1]机器学习的概念以及最简单的算法

什么是机器学习

Tom Mitchell provides a more modern definition: “A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.”
简单翻译一下就是,有任务T,经验E,结果P,当经验E增加时,一个计算机程序[……]

Read more

工厂模式和抽象工厂概述以及二者的区别

工厂模式

什么是工厂模式

顾名思义,工厂模式就是一种生产产品的模式,我们这里的产品就是各种各样的对象

工厂模式的类图


如图所示:
1.我们有一个抽象类,工厂,两个具体实现,NYstore和Bstore,实现了抽象工厂的几个方法
2.我们有一种产品,pizza,并且对于它我们有很多实现,分为ny系和b系,不过他们都是pizza
当我们需要pizza的时候,我们只要用一个store对象的创建方法来点餐就可以了,工厂类会根据其类型的不同创建相应的pizza给我们吃。
调用代码:

抽象工厂

什么是抽象工厂

简单的说,抽[……]

Read more

AndroidStudio插件开发——RemoveButterKnife从构思到实现

ReomveButterKnife插件

这是一个用于移除代码中对ButterKnife使用的AS插件,接下来我们将从头开始讲讲AS插件开发和这个插件的开发过程
地址是RemoveButterKnife
QQ截图20160624161742

什么是AndroidStudio插件

相信能开始阅读这篇文章的朋友都是从事,或者有兴趣从事Android开发的,那么,我们现在最常用的开发工具无疑就是AndroidStudio了。

那么,什么又是AndroidStudio插件呢?

AndroidStudio虽然是Google公司推出的一款很方便的开发环境,但是在实际的使用中,还是有一些功能是我们需要而它没有的,比如对vim输入方式的[……]

Read more

【解题报告】【lintcode28】Search a 2D Matrix

题意

写出一个高效的算法来搜索 m × n矩阵中的值。

这个矩阵具有以下特性:

每行中的整数从左到右是排序的。
每行的第一个数大于上一行的最后一个整数。
性能要求,时间复杂度O(logm+logn)

解答

两次二分,第一次确定所在行,第二次确定所在列

代码

[……]

Read more

【解题报告】【lintcode111】Climbing Stairs

题意

假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

解答

由于一次只能走一步或者两步,所以我们可以直接获得递归的公式,但是当楼梯太多的时候,递归层次太深,会超时。
我们又想到dp,由于一次走一步或者两步,所以可以从上一个状态或者上两个状态到达当前状态,所以可以得到公式
dp[n] = dp[n-1]+dp[n-2]
因为对于dp[n-1]来说,只能走一步,对于dp[n-2]只能走长度2,所以我们把他们的解的个数加起来,就是我们现在的解数了。

代码

[……]

Read more