数学和算法

UD机器学习 - C5 深度学习

2019-08-28  本文已影响0人  左心Chris

1 神经网络

sigmod函数和softmax函数
最大似然概率和交叉熵和多类别交叉熵
Logistic回归和梯度下降推导

1.1 问题分类

分类
回归

1.2 感知机算法


输入:T={(x1,y1),(x2,y2)...(xN,yN)}(其中xi∈X=Rn,yi∈Y={-1, +1},i=1,2...N,学习速率为η)
输出:w, b;感知机模型f(x)=sign(w·x+b)
(1) 初始化w0,b0,权值可以初始化为0或一个很小的随机数
(2) 在训练数据集中选取(x_i, y_i)
(3) 如果yi(w xi+b)≤0
w = w + ηy_ix_i
b = b + ηy_i
(4) 转至(2),直至训练集中没有误分类点
原文链接:https://blog.csdn.net/Dream_angel_Z/article/details/48915561
但是这个只能定义线性边界

1.3 激活函数和sigmod函数

1/(1+e^(-x))

1.4 最大似然法

1.5 交叉熵(逻辑回归用的损失函数)

1.6 多类别交叉熵

1.7 Logistic回归



单分类和多分类:


1.8 梯度下降和公式推导

推导:



https://blog.csdn.net/programmer_wei/article/details/52072939
https://blog.csdn.net/programmer_wei/article/details/51941358

2 深度神经网络

神经网络结构
前向反馈和反向传播
优化方法(梯度消失等等)

2.1 非线性数据和模型和神经网络结构

通过累加和计算sigmod函数来计算
每一个中间层都要用激活函数
多分类如果多个网络再做softmax有点浪费;所以就在最后一层设置多个sigmod函数,算出不同类别的分数,然后用softmax函数求出每种类别的概率

前向反馈和反向传播

2.2 keras学习

优化器 (Optimizer):rmsprop,adam,ada

2.3 训练优化

2.4 Keras优化程序

Keras 中有很多优化程序,建议你访问此链接或这篇精彩博文(此链接来自外网,国内网络可能打不开),详细了解这些优化程序。这些优化程序结合使用了上述技巧,以及其他一些技巧。最常见的包括:

&http://ruder.io/optimizing-gradient-descent/index.html#rmsprop
&https://keras.io/optimizers/

2.5 神经网络回归

如果想把分类变为回归,就把最后的sigmod函数删了,然后直接用上一relu层算y,然后用(y-yhat)^2作为误差函数进行训练



我们的内容开发者之一 Jay Alammar 创建了这个神奇的神经网络 “游乐场”,在这里你可以看到很棒的可视化效果,并可以使用参数来解决线性回归问题,然后尝试一些神经网络回归。 预祝学习愉快!

https://jalammar.github.io/visual-interactive-guide-basics-neural-networks/

2.6 keras小项目:使用 Keras 分析 IMDB 电影数据

加载数据,检查数据,特征工程(one hot),模型构建,训练模型,评估模型,模型调优

3 卷积神经网络

3.1 应用

3.2 手写数据库MNIST database

预处理:/255归一化
对标记进行one-hot label
矩阵的每一行向量进行拼接成输入向量

在训练过程中,你可以使用很多回调(例如 ModelCheckpoint)来监控你的模型。你可以参阅此处的详情内容。建议你先详细了解 EarlyStopping 回调。如果你想查看另一个 ModelCheckpoint 代码示例,请参阅这篇博文

3.3 细节

filter 大小和卷积窗差不多大小
filter和卷积窗求和再用ReLU函数去算
在边缘检测的特别有效,用水平或者垂直的filter来组合

对于彩色的图片可以理解为三层,是三维的

一层一层的卷积层发现规律

from keras.models import Sequential
from keras.layers import Conv2D

model = Sequential()
model.add(Conv2D(filters=16, kernel_size=2, strides=2, padding='valid', 
    activation='relu', input_shape=(200, 200, 1)))
model.summary()
上面的参数量是80,计算方法见图下:
from keras.models import Sequential
from keras.layers import MaxPooling2D

model = Sequential()
model.add(MaxPooling2D(pool_size=2, strides=2, input_shape=(100, 100, 15)))
model.summary()

3.4 图片分类CNN

先要把图片处理成统一格式,比如32*32像素,彩色图片分为3层,黑白图片为1层,皆为RGB 0-255数值
模型配置:


3.5 keras中的CNN实例

你可以在 aind2-cnn GitHub 资源库中访问视频中描述的 Jupyter Notebook。转到 cifar10-classification/ 文件夹并打开 cifar10_mlp.ipynbcifar10_cnn.ipynb

3.6 keras中的图片增强功能

scale(图片放大或缩小)和rotation(图片旋转)和translation invariance(图片平移)
如果想要这些特征,就在数据集中加入转化了这些特征的图集 data augmentation
你可以在 aind2-cnn GitHub 资源库中访问视频中描述的 Jupyter 记事本。转到 cifar10-augmentation/ 文件夹并打开 cifar10_augmentation.ipynb

steps_per_epoch = x_train.shape[0] / batch_size

其中 x_train.shape[0] 对应的是训练数据集 x_train 中的独特样本数量。通过将 steps_per_epoch 设为此值,我们确保模型在每个 epoch 中看到 x_train.shape[0] 个增强图片。

3.7 突破性的CNN架构

ImageNet为超过1千万手动标记图片的数据库,ImageNet Large Scale Visual Recognition Competition

AlexNet
VGG Net
ResNet

3.8 可视化CNN

通过不同的filter发现组合后的图片
如果你想详细了解如何解读 CNN(尤其是卷积层),建议查看以下资料:

3.9 迁移学习 transfer learning

迁移学习
迁移学习是指对提前训练过的神经网络进行调整,以用于新的不同数据集。

4 癌症检测模型 (单独写了一篇)

5 狗狗分类项目

上一篇 下一篇

猜你喜欢

热点阅读