zoukankan      html  css  js  c++  java
  • 人工智能实战2019第三次作业_李大

    项目 内容
    课程 人工智能实战2019
    作业要求 第三次作业
    我的课程目标 第一次作业
    本次作业作用 熟悉mini_batch的实现、作用

    Coding作业

    随机选取数据

    def GetBatchSamples(X,Y,batch_size,iteration):
        num_feature = X.shape[0]
        shuffled_sequence = np.arange(0, X.shape[1])
        np.random.shuffle(shuffled_sequence)
        batch_x = X[0:num_feature, shuffled_sequence[0: batch_size]].reshape(num_feature, batch_size)
        batch_y = Y[0:num_feature, shuffled_sequence[0: batch_size]].reshape(num_feature, batch_size)
        return batch_x, batch_y
    
    • 重写GetBatchSamples后直接运行即可,每次获取数据时随机产生一个乱序的index list,取前batch size个index作为构造X和Y时使用的索引

    取5,10,15的batch_size运行

    • max_epoch取50,50,100;eta均取0.1,max_iteration = (int)(num_example / batch_size)
    • max_epoch * max_iteration > 800即可,结果比较0=30-800之间loss的变化情况
    • GetSampleBatch使用随机获取

    batch_size = 5,总收敛iteration = 48 * (200 / 5) + 37 = 1957

    • loss下降曲线抖动明显,抖动源于样本个体的差异


    batch_size = 10,总收敛iteration = 41 * 20 + 18 = 838

    • 相比batch_size = 5抖动明显减弱很多,更大的batch平均后越能描述样本整体的性质


    batch_size = 15,总收敛iteration = 685

    • 抖动更不明显


    结论:

    • batch越大收敛iteration总数越少(但每个iteration的计算量越大),抖动越不明显。大batch更反应样本整体的特性,降低个体样本的噪声。

    问题

    问题2:为什么是椭圆不是圆?如何构造圆图?

    • 上式为均方差损失函数,可以很显然,w和b对J贡献不相等,即J对w和b的偏导数不等的时候J的平面映射图会是椭圆。
    • 要想构造平面映射图为圆的损失函数,显然w和b地位对等,可以对换,即可以写成

    • 则此时J(w,b) 可写成J1(w)或J1(b),为圆图

    问题3:为什么中心是个椭圆区域而不是一个点?

    • 理论上均方差损失函数是有唯一最小值点的,但因为计算机计算时的精度有限,同心椭圆中心处在最小精度以下的数域(都四舍五入为同一个值a)计算结果都只能用一样的损失值(a的损失值)表示,故中心是椭圆区域。
    • 据此,计算精度越高,中心的椭圆区域越小。当计算精度无限高(计算时使用无限多位小数时),中心会是一个点。
    • 当步长(学习率)无限小时,loss能收敛到中心点。
  • 相关阅读:
    各种解码网站
    带你走进php大马的结构模块编写之路
    如何优雅的调戏XSS
    静态分析第三发 so文件分析(小黄人快跑)
    C# Window编程随记——ClickOnce程序部署
    sklearn特征选择和分类模型
    实现Activity的滑动返回效果
    JSP自己定义标签继承哪个类
    [LeetCode][Java] Unique Paths II
    关于腾讯微博之死,离职员工所了解的真相
  • 原文地址:https://www.cnblogs.com/lixiaoda/p/10593315.html
Copyright © 2011-2022 走看看