• Machine Learning


    一、Reinforcement Learning 强化学习
      抛弃人类经验”和“自我训练”并非AlphaGo Zero最大的亮点,其关键在于采用了新的reinforcement learning(强化学习的算法),并给该算法带了新的发展。
    AlphaGo Zero仅拥有4个TPU,零人类经验,其自我训练的时间仅为3天,自我对弈的棋局数量为490万盘。但它以100:0的战绩击败前辈。
     
    二、Unsupervised Learning 无监督学习
      要学习的问题在你学习之间没有固定的答案,希望算法对特定的输入信息进行自动化的学习来达到了解这些数据内部一些固定结构的目的。特点是这些训练样本在训练之前是没有被标定的,没有准确的答案,也没有准确的办法去检测我们的学习是不是对,只能说找到一个比较好的解决方案,不能说找到一个固定标准。 K-means算法。
        
          是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。 
     
    三、 Supervised Learning 有监督学习
      学习之前,对收集来的数据已经有了特定的答案,希望训练出一种算法,对将来收集到的数据进行判断
     
    1、传统算法:
      SVM(Support Vector Machine)
      基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大。
      SVM是用来解决二分类问题的有监督学习算法,在引入了核方法之后SVM也可以用来解决非线性问题。
     
    2、 ANN(Artificial Neural Network)
      Single-layer perceptron
      Multi-layer perceptron
      BP neural network
     
    3. Tensorflow (多维数据,张量,在图里流动)
      Tensorflow是一个有向图的集合
      Placeholder 给定的输入,放输入的地方
      Variables 要训练一个神经网络,用来训练的所有的自由参数,要优化的目标
    • weight 权重
    • biases 偏置
    归一化
    ---------------------------------------------------------------------------------------------
    ML Training
     
    机器学习数学算法分为四类:
     
    一、线性回归 Linear Regression
    已知三个点,求一条直线,用解析几何来做回归,要点数足够多。点数少了欠拟合,点数多了叫过拟合。
     
    三个函数:
    1. 激活函数 :(预测函数 )
      sigmoid是非线性的, relu是线性的,tanh

    2. 损失函数 :(代价函数)
      平方损失函数(最小二乘法)
      log对数损失函数(逻辑回归)
      指数损失函数(Adaboost)
      https://www.cnblogs.com/shixiangwan/p/7953591.html

    3. 优化算子 : 大部分时候GradientDescentOptimizer足够了
      GradientDescentOptimizer
      AdamOptimizer
      https://www.jianshu.com/p/d99b83f4c1a6

     
    H(x)是Y的预测值,cost = 对(H(xi) - Yi)的平方求和/N,让这个值最小,就是拟合的过程
    ReduceMean()就是干这个的
     
    二、逻辑回归 Logic Regression
    (人为的设计一个概率值(eg.0.5),把连续的函数变成了二分类 true or false)
    交叉熵(crossentropy),信号处理 IIR (冲击响应)FIR (无限冲击响应,反馈模型,当前的输出不仅和当前的输入有关系,还和上一个状态有关系)
    当交叉商最的时候,H(x)最接近真实的概率
     
    shape=[None, 2]
    数据过多,十万个,要用batch分批
    训练集,验证集
     
    hypothesis
    predicted
    accuracy
     
     
    三、多分类 Softmax classification (前身是SVM, 森林,决策树......过气了)
    损失函数变了,依然是交叉商理论
    cost = tf.reduce_mean(-tf.reduce_sum(Y * tf.log(hypothesis), axis=1))
     
    四、神经网络 Neural Networks
    One_Hot = True 只有一个值为1,One_Hot是一种编码 1 = 000001, 2 = 000010
     
    XOR:异或门的例子,不收敛,没有梯度,梯度消失,梯度弥散
    核心问题是:用一阶逻辑去表达二阶逻辑,那是不可能的
     
    在神经网络加宽加深的效果来看,结果越来越精细,所以Deep Learning, 也是Wide Learning
     
    CNN:
    激活函数变成了卷积CONV
    2012 Yann LeCun, Bengio, Hinton
     
    Relu 层: 避免过拟合
    池化层: 相邻点之间的关系并不重要,隔几个点之间的关系更重要,是提炼共性,起到了降维的作用
    Max Pooling:块中取最大值
    降维只有两个地方:1. 调整卷积核的步长 2. 池化层
     
    卷积和池化:用抽象的特征值来分类
     
    4K,图像越高清,能提取出来的特殊值越多
    卡尔漫滤波,贝叶斯
    LeCun 1998 : LeNet-5
     
    Image,图像
    Filter, 卷积核
    Stride, 步长
    Padding,插值
     
    CNN第一步卷积后变成几块,由卷积核的个数确定,这个可以自己决定,卷积核的值是随机取的,开始的时候预测准确率不高
     
     
    RNN:
    RNN也是CNN,只是把时间当作一维信息考虑进去了
     
    learning_rate = 0.1 学习梯度下降率
    epochs = 批次为500
     
     
    py -3 web.py 起一个web server
     
    语音识别: RNN
    图像识别: CNN
    目标识别: R-CNN,Fast R-CNN, Faster R-CNN  
    图像中挖掘语义: CNN +RNN
     
    LSTM: Long Short Term Memory, 是最有代表性的RNN,最新的
    激活函数是BasicLSTMCell
    损失函数是dynamic_rnn
    优化算子是Adam
     
    char-rnn
     
    Tensorboard 用来做可视化窗口
    tensorboard --logdir = ./logs/
     
    在chrome中打开: http://juyun:6006
     
     
    一些小细节:
    语义 RNN
    稀疏: 用少量的数据,生成更多的数据
    边缘计算,在节点处完成计算, 英伟达 TS1ARM+CUDA,碾压海康的TI SVM多摄象头
     
     
    一些框架:
    keras tensorflow caffe
    MXNet --- Amazon AI
    TensorFlow --- Google Framework
    PyTorch --- Fackbook AI Research
    CNTK --- Microsoft
      
    https://www.tensorflow.org/install/install_sources
     
    CUDA驱动,1.4以下的要装8, 1.4以上要装9
    cuda_8.0.44
    cuda_9.0.176
    cudnn-8.0
    cudnn-9.0
     
     
     
    过拟合: 两张图像去比对,必须一模一样才能......
    梯度下降是一个求微分的过程
    卷积是一个求积分的过程
     
    /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
    pip3 install jupyter notebook
     
     
    python的四种数据类型:
    list 允许数据类型不一致 [a,b,c]
    dictionary {key:value}
    tuple ()
    set {val1, val2}
     
     
    num1 = [1,2,3]
    num2 = num1 #浅拷贝
    num3 = num2.copy() #深拷贝
    hex(id(num1)) = hex(id(num2)) != hex(id(num3))
     
     
    稀疏:提前提炼出有用的信息,过滤掉冗余的信息,例如人脸检测中只要人脸的数据
     
    desmos可用来画图像
     
     
    标签: 结果,用来训练的0,1
     
    复用:
    saver.save()
    saver.restore(sess.ckpt.model_checkpoint_path)
     
    nn.dropout()可以用来解过拟合Overfitting的问题
     
     
     

    交叉熵(crossentropy)

  • 相关阅读:
    Linux系统下手把手完成无人值守安装服务
    2019年国际网络安全趋势
    Wi-Fi Mesh网络技术
    如何用nginx在本地把9000端口转发到80端口上
    LAMP架构部署和动态网站环境的配置
    智能校服受到多数学生追捧
    热心网友设计出更美的Windows 10开始菜单
    一起来全面解析5G网络领域最关键的十大技术
    如何跟上时代的步伐进入云世界
    c#写入文件流
  • 原文地址:https://www.cnblogs.com/awiki/p/9527209.html
Copyright © 2020-2023  润新知