人工智能实战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 = 1957html

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


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

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


batch_size = 15,总收敛iteration = 685dom

  • 抖动更不明显


结论:

  • 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能收敛到中心点。
相关文章
相关标签/搜索