在图像领域,我们经常应用的是卷积神经网络(convolutional neural network),常缩写为CNN。
对于音频等序列数据(sequence data),我们经常应用循环神经网络(recurrent neural network),常缩写为RNN。
常见记号:
(x,y)表示样本,其中,nx表示x的维度。
表示第i个样本,也可用矩阵
表示所有样本
表示预测值,要学习的参数为
。若使用
,则预测值不在[0, 1]之间,可能为很大的正数或负数,故会使用Logistic回归使预测值在[0, 1]。
一、Logistic Regression(an algorithm for binary classification)
1、Logistic function:
令,
2、Logistic Regression cost function
(1) Loss (error) function
在logistic回归中,如果使用,学习参数时会把优化问题变成非凸(non-convex),最后会得到很多个局部最优解(local optimum),使梯度下降法失效,所以通常不使用。
使用(适用于单个训练样本)。
(2)cost function
(基于参数总成本,衡量参数w和b的效果)
3、gradient descent algorithm
参数学习公式:
对于单个样本有:
将各个样本的一次结果累加取平均,则得到了整个样本集上的一次结果。
4、vectorization
向量化(能实现并行化计算)代替for循环能大大加快计算速度,尽量不用for循环,可调用python的numpy
# -- coding: utf-8 --
import numpy as np
import time
a = np.random.rand(1000000) # 1000000维的数组
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a, b)
toc = time.time()
print(c)
print("Vectorized version:"+str(1000*(toc-tic))+"ms")
c = 0
tic = time.time()
for i in range(1000000):
c += a[i]*b[i]
toc = time.time()
print(c)
print("For loop:"+str(1000*(toc-tic))+"ms")
二、neural network
1、selection of activation functions
(1)sigmoid function
使输出在[0, 1]之间
(2)tanh函数
,函数的均值为0,各项都优于sigmoid函数
(3)ReLU (修正线性单元rectified linear unit)
在输入为正的时候斜率一定,不会产生上面两种在两端时梯度变化很慢,学习速度很慢的情况。很常用。
2、random initialization
不能将w初始化为全0,可以使用0.01*np.random.randn( )产生符合高斯分布的初始值。
3、forward propagation and backward propagation
即由前面一层的输出推得后一层的输出,由后一层的变化得到前一层的变化用以调整参数。