什么是深度学习:
1. 感知问题:用数据训练机器干之前只能人来干的事情,如图像处理,语言对话识别,人机交互 -> 计算机视觉,语音识别
2. 应用:发现新药,自然语言处理,理解文件
优势:
1. 数据越多越准确
2. 问题越复杂越可能发现人类会忽略的联系
3. 方法对于各界问题都通用
为什么现在热?
数据量多,数据处理速度快
神经网络 -> 深度学习
如何安装:自行参考百度大神们的意见
TensorFlow中,数据都存在Tensor这个object里面,如:
常数:tf.constant()
非常数:tf.placeholder(tf.string/int32/float32),配合feed_dict = {}
变量:tf.Variable()
变量需要初始化:init = tf.global_variables_initializer()
正态分布随机值:tf.truncated_normal()
一堆0:tf.zeros()
Session: 运行图表的环境
创造:with tf.Session() as sess:
运行: output = sess.run(tf.constant('Hellp World!'))
print(output)
运算:(需要保证数据类型一致,可以使用tf.cast())
tf.add() tf.subtract() tf.multiply() tf.divide()
tf.matmul()
tf.nn.softmax()
tf.reduce_sum()
tf.log()
该项目主要讲分类问题 (Logistic Classifier)y = Wx + b = xW + b
softmax: 能使输入值都变成正数的激活函数,然后就可以算出结果预测的概率值
one-hot encoding:使输出类别变成一个n*1矩阵,是该类的矩阵中值为1,不是该类的值为0
类别特别多的时候,one-hot encoding会变得特别麻烦,这边使用cross-entropy计算输出与各个类别之间的距离
multinomial logistic classification:
输入x -> (linear model) xW + b -> (logits) y -> (softmax) D(y) -> (cross-entropy) D(S, L) -> (one-hot labels) L
loss function: 1/Nsum(D)
为了更好地优化得到最小loss,我们需要这个公式的输入参数分布均匀(平均值为0,方差相等)也就是标准化,以减少误差。
为了使模型更准确,需要把数据随机分为训练集,验证集,和测试集。
在建模选参数的时候绝对不可以使用任何和测试集相关的数据,直到最后验证模型准确率。
验证集是用来中途测试模型表现如何,以便进行调整。可以用交叉验证法高效利用数据,不过数据量还是王道。
GD用在这个问题上太耗计算量,所以用SGD,每次随机取一小部分数据(batch),计算他们的loss和grad。虽然效果不好但是很快,最后也能得到一个不错的结果。
实际运用:
1. 动量法,假定每一次都在往正确的方向移点,那么新的方向肯定和老方向有关:M <- 0.9M + grad(fLoss)
2. 学习率衰减:步数越多学习率越小
可以调整的模型参数:初始学习率,学习率衰减,动量,batch size,权重初始
算法:ADAGRAD (只用调batch size和权重初始)
Epoch:一次前馈+一次反馈
电脑运算能力不够用:aws.amazon.com
浙公网安备 33010602011771号