ml入门(三)powered by @李宏毅


第七课(cnn)

1 keras example

from keras import Convolution2D, Dense, models, MaxPooling2D, Flatten
import numpy as npmodel = models.Sequential()
# Convolution2D 第一个参数代表25个filter,第二和第三代表filter形状为3*3
# input_shape表示输入图片的形状28*28,第三个1表示为黑白图片,若为彩色图片为3
model.add(Convolution2D(25, 3, 3, input_shape=(28, 28, 1)))# 其中参数代表选取的矩阵大小
model.add(MaxPooling2D((2, 2)))# filter的数目一般越来越多
model.add(Convolution2D(50, 3, 3))
model.add(MaxPooling2D((2, 2)))model.add(Flatten())# 全连接
model.add(Dense(output_dim=100, activation='relu'))
model.add(Dense(output_dim=10, activation='softmax'))# 开始训练 ...以下省略
model.fit()

2 运行过程图片形状变化图

3 convolution

图像中不同数据窗口的数据和卷积核(一个滤波矩阵)作内积的操作叫做卷积。其计算过程又称为滤波(filter),本质是提取图像不同频段的特征。

(1) 卷积核

也称为滤波器filter,带着一组固定权重的神经元,通常是nm二维的矩阵,n和m也是神经元的感受野。nm 矩阵中存的是对感受野中数据处理的系数。一个卷积核的滤波可以用来提取特定的特征(例如可以提取物体轮廓、颜色深浅等)。通过卷积层从原始数据中提取出新的特征的过程又成为feature map(特征映射)。

4 max pooling

对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。

5 flatten

Flatten层用来将输入“压平”,即把多维的输入一维化,再丢入全连接层。

6 full connection

全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图,进而将图片进行分类。

7 shallow和deep的比较

由图看出,较深的网络和较浅的网络在参数量一样的情况下,较深的网络性能更强。

(1) 模块化

模块化就像子函数一样可以被多处调用但是只需在一处定义即可,而不需要在每处需要使用的地方写上完整的函数。

由图看出,模块化能使网络将特征进一步分化,后面的分类器可以根据前面基础分类器得出结果进一步分类,可以利用较少的训练数据得到比较好的结果。

第八课(semi-supervised)

1 generative model

EM算法

举例:问题描述:抽取100个男生和100个女生样本的身高,但是我们不知道抽取的那200个人里面的每一个人到底是从男生的那个身高分布里面抽取的,还是女生的那个身高分布抽取的。 用数学的语言就是,抽取得到的每个样本都不知道是从哪个分布抽取的。 这个时候,对于每一个样本,就有两个东西需要猜测或者估计: (1)这个人是男的还是女的?(2)男生和女生对应的身高的高斯分布的参数是多少?
EM算法要解决的问题是: (1)求出每一个样本属于哪个分布 (2)求出每一个分布对应的参数

ps: EM算法对初始值较为敏感!

2 low-density-separation

低密度分离假设就是假设数据非黑即白,在两个类别的数据之间存在着较为明显的鸿沟,即在两个类别之间的边界处数据的密度很低(即数据量很好)。

(1) self-train

3 entropy-base-regularization

基于熵的正则化

由图可知xu属于某一类的概率越大,其熵的值越小。

4 smoothness assumption

位于稠密数据区域的两个距离很近的样例的类标签相似,也就是说,当两个样例被稠密数据区域中的边连接时,它们在很大的概率下有相同的类标签;相反地,当两个样例被稀疏数据区域分开时,它们的类标签趋于不同。

5 better-representation

去芜存菁、化繁为简,找到潜在的因素,通常潜在的因素比较简单且能够更好的表示原先的事物。

第九课(unsupervised learning)

1 clustering

(1) k-means

K均值聚类算法是先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。

如何计算各个种子聚类之间的距离?
 1 欧式距离
 二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:

 2 曼哈顿距离 // 城市街区距离

(2) hierachical agglomerative clustering(HAC)层次聚类

假设有5个样本,计算两两之间的相似度,将最相似的两个样本聚合在一起(比如第一个和第二个),再将剩下的4个聚合在一起,以此类推。

2 dimension reduction

降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。
优点:
 1 使得数据集更易使用。
 2 降低算法的计算开销。
 3 去除噪声。
 4 使得结果容易理解。

(1) feature selection

详细概念: https://blog.csdn.net/hren_ron/article/details/80914491
从N个特征中选择其中M(M<N)个子特征,并且在M个子特征中,准则函数可以达到最优解。
特征选择想要做的是:选择尽可能少的子特征,模型的效果不会显著下降,并且结果的类别分布尽可能的接近真实的类别分别。

  1. 生成过程:生成候选的特征子集;
  2. 评价函数:评价特征子集的好坏;
  3. 停止条件:决定什么时候该停止;
  4. 验证过程:特征子集是否有效;
(2) principle component analysis(PCA)

详细概念:https://blog.csdn.net/program_developer/article/details/80632779
PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。

数学推导:

缺点
 1 unsupervised

 2 linear

(3) NMF(non-negative matrix factorization,非负矩阵分解)

详细概念: https://blog.csdn.net/u011089523/article/details/77340476
NMF的思想:V=WH(W权重矩阵、H特征矩阵、V原矩阵),通过计算从原矩阵提取权重和特征两个不同的矩阵出来。属于一个无监督学习的算法,其中限制条件就是W和H中的所有元素都要大于0。

(4) word embedding

专门用于文字的降维方法


How to exploit the context?
 1 count based

 2 perdition based
 用前一个词预测后一个词:

 用前两个词预测后一个词:

 ps: 要共享参数,否则一个词会有两个词向量,共享参数还可以减少参数数量。
 图中的梯度下降时参数更新公式可以保证对应参数一直相等。

(4) neighbor embedding

 1 locally linear embedding(LLE)
  从原来的分布中找一点 不变。

  LLE没有明确的function做降维。
  LLE的好处是,就算不知道 ,也可以用LLE。
  要好好调neighbour的个数,刚刚好才会得到好的结果。
  点之间的距离关系保持不变需要点之间够近,所以k太大不行,会考虑一些太远的点。

 2 T-distributed Stochastic Neighbor Embedding(t-sne)
  前面方法只假设相近的点接近,未假设不相近的点要分开。
  t-SNE先分别计算原空间、新空间中所有点对的相似度再归一化。归一化是必要的,为了防止两个空间中距离的scale不同。
  然后最小化二者之间的KL距离,代入公式用GD即可。
  t-SNE计算量大,可先用PCA降维,再用t-SNE降维。
  t-SNE需要一堆data point,然后找到z。如果之后再给一个数据,t-SNE是没法做的,只能再跑一遍。
  所以t-SNE主要用于可视化。
  t-SNE的神妙之处在于原空间与新空间中相似度计算公式不同。
  原空间的计算公式,使得两个点的相似度随距离增加快速下降。
  而新空间的计算公式,是长尾的,为了维持相同的相似度,两个点之间要分得更开。对原来距离很近的点,影响很小。而原来离得远的点,会被拉开,强化gap。
  比较LLE on MNIST 与 t-SNE on MNIST。后者先做了PCA。

3 deep auto-encoder

使用neural network做unsupervised learning,类似于PCA只不过hidden layer比PCA多

(1) de-noising auto-encoder

为了验证encoder和decoder是否学习到东西

4 generative model

1 PixelRNN

根据前面的像素预测接下来的像素。PixelRNN不仅work,而且在各种生成方法中PixelRNN产生的图是最清晰的。
用在图像上有一些tips: 如果RGB三个值相差不大,则得到的颜色灰灰的、不够明亮,可以把众多颜色聚成若干类然后做1-of-N encoding。

2 variational autoencoder(VAE)

VAE得到的结果不太清楚。VAE与PixelRNN区别在于,理论上VAE可以控制要生成的image。
比如code是10维,固定其中8维、调整剩余2维,看结果,可以解读code的每个维度代表什么意思,从而每个维度就像拉杆一样可以有目的的调整。

3 generative adversarial network(GAN)

用拟态的演化来类比GAN。

Discriminator判断image是Generator产生的还是real images, Generator根Discriminator演化。
Generator从未看过real images, 产生的是database中没有见过的image。

实际的问题:

maching learning入门(三)相关推荐

  1. maching learning入门(六)

    ml入门(六)powered by @李宏毅 第十五课(Reinforcement Learning) 让机器根据不同的action将会得到不同的response,可能是不好的,也可能是好的.rein ...

  2. maching learning入门(一)

    ml入门(一)powered by @李宏毅 第一课(机器学习总览) ml基本步骤 1 找出一个function set 2 让maching拥有衡量一个function好坏的能力  loss fun ...

  3. maching learning入门(五)

    ml入门(五)powered by @李宏毅 第十三课(RNN,recurrent neural network,循环神经网络) 全连接神经网络和卷积神经网络他们都只能单独的取处理一个个的输入,前一个 ...

  4. maching learning入门(四)

    ml入门(四)powered by @李宏毅 第十课(迁移学习) 迁移学习要解决的问题是:假设现在手上有与task不直接相关的data,这些data能否帮助我们完成task呢? 比如现在要做猫狗的分类 ...

  5. maching learning入门(二)

    ml入门(二)powered by @李宏毅 第六课(deep learning) 一 前向传播和反向传播 概念详解 https://blog.csdn.net/bitcarmanlee/articl ...

  6. 文本分类入门(三)统计学习方法

    文本分类入门(三)统计学习方法 前文说到使用统计学习方法进行文本分类就是让计算机自己来观察由人提供的训练文档集,自己总结出用于判别文档类别的规则和依据.理想的结果当然是让计算机在理解文章内容的基础上进 ...

  7. WPF入门(三)-几何图形之不规则图形(PathGeometry) (2)

    WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 原文:WPF入门(三)->几何图形之不规则图形(PathGeometry) (2) 上一节我们介绍了PathG ...

  8. m_Orchestrate learning system---十三、thinkphp的验证器支持多语言么

    m_Orchestrate learning system---十三.thinkphp的验证器支持多语言么 一.总结 一句话总结:支持,不仅验证器支持,其它的插件应该都支持 不仅thinkphp支持多 ...

  9. Hand on Machine Learning第三章课后作业(1):垃圾邮件分类

    import os import email import email.policy 1. 读取邮件数据 SPAM_PATH = os.path.join("E:\\3.Study\\机器学 ...

最新文章

  1. ReentrantReadWriteLock
  2. POWERSHELL基于ConvertTo-Htm指定单元格效果css风格html报表
  3. 0-1背包问题 动态规划java_C#使用动态规划解决0-1背包问题实例分析
  4. 使用xib封装一个view的步骤
  5. 解决tomcat同时部署多个SpringBoot应用提示InstanceAlreadyExistsException
  6. dubbo 使用学习五(dubbo开发中使用到的一些服务配置方式)
  7. 怎么把ppt文字大小设置一致_PPT基础入门技巧,这都不会?就别谈制作PPT了,学会瞬间提高档次...
  8. SSH config 配置
  9. hadoop 3.0新特性简单介绍
  10. EMC VMAX关于vault有关的概念
  11. 批量下载excel中超链接对应的文件
  12. firefox调试html5程序,用 Firefox 开发者工具调试现代 Web 应用程序
  13. Android studio File Explorer sdcard文件怎么访问
  14. 视频分辨率转码(ffmpeg)
  15. c语言程序如何在keil中运行,keil c51中C程序的启动过程
  16. WPF中的右键菜单ContextMenu
  17. Google加速移动页面(AMP)简介
  18. Mulesoft,两个月考证准备,每天进步一点点!
  19. 寂然解读设计模式 - 单一职责原则
  20. lisp 河道水面线计算_美国工程兵团河道水面线计算CAD(HEC-RAS)

热门文章

  1. 服务器搭建青龙面板薅京豆
  2. LeetCode546-20.8.15-移除盒子
  3. [编程教程]郁金香2013网授VC++ 2008 详解 [ 50课 ]
  4. 【锐捷无线】AC集群配置
  5. 源代码应该怎么理解?
  6. python画e指数函数_python实现画出e指数函数的图像
  7. 【案例练习】15—27个网页设计的 HTML 时间线
  8. 把url字符串转成url对象
  9. 说话人识别中的损失函数
  10. 阿发你好java_阿发你好 - 主页