一、几个大头
- Geoffrey Hinton(The Godfather of deep learning)
–>Google Brain - Yann LeCun(The father of CNN)
–>Facebook - Yoshua Bengio
–>蒙特利尔大学 - Andrew Wu(吴恩达)
–>百度大脑
二、训练数据/验证数据/测试数据
Training data–>用来训练,构建模型
Validation data–>用来在模型训练阶段测试模型的好坏
Test data–>评估模型的好坏
三、监督学习/无监督学习/半监督学习
监督学习
训练样本带有标签。就是我们知道这张照片代表的是3,这张图代表的是狗。标签感觉可以理解成真值的意思。
无监督学习
训练数据不带标签。例如下边有8个点,可以使用无监督学习将它们聚类。
半监督学习
监督学习和无监督学习相结合的一种学习方式。主要用来解决使用少量带标签的数据和大量没有标签的数据进行训练和分类的问题。现在用的比较少。
四、回归/分类/聚类
回归
预测数据为连续型数值
分类
预测数据为类别型数据,并且类型已知
e.g.预测要不要出去运动
聚类
预测数据为类别型数据,但是类别未知
五、单层感知器
人体神经网络
人工神经网络
上图就是一个简单的单层感知器。早期的单层感知器激活函数是
s
i
g
n
sign
sign函数,所以只有两个输出值:1或者-1。
上图是另一种单层感知器的模型结构,将偏置因子外置。将
b
b
b换做
w
0
w_0
w0
我们所谓的“训练”,就是通过大量的数据训练出一个我们满意的权值和偏置值,使输出Y等于标签。训练过程如下:
通过上述描述的学习过程,可见最终感知器输出的y与我们给定的标签t(tag)值相同。并且得到了权向量的值。
学习率 η \eta η
这是一个要自己调整的参量,一般取0-1之间,学习率太大容易造成全职调整不稳定;学习率太小,全职调整太慢,迭代次数太多。
epoch是指学习的周期数,loss是指误差。
模型收敛条件
- 误差小于某个预先设定的较小的值
- 两次迭代之间的权值变化已经很小
- 设定最大迭代次数,当迭代超过最大次数就停止(用的最多
一个例子
因为w0是表示偏置值,我们先把他们都设置为1。所以每个输入数据的第一位都是1。
python代码如下:
import numpy as np
#定义输入数据
X = np.array(
[[1,3,3],
[1,4,3],
[1,1,1],
[1,2,1]])
#定义标签
T = np.array([[1],
[1],
[-1],
[-1]])
#权值初始化
W = np.random.random([3,1])
#学习率设置
lr = 0.1
#神经网络输出
Y = 0
#更新权值函数
def train():
global X,Y,W,lr,T
Y = np.sign(np.dot(X,W))
E = T - Y
delta_W = lr * (X.T.dot(E)) / X.shape[0]
W = W + delta_W
for i in range(100):
train()
print('epoch:',i+1)
print('weights:',W)
Y = np.sign(np.dot(X,W))
if(Y == T).all():
print('Finished')
break