{"resolved":true,"match_type":"uuid","source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","requested_by":"printed_page","book":{"source_type":"original_book","book_id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","id":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","uuid":"cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title":"人工智能与大数据技术导论","normalized_title":"人工智能与大数据技术导论","author":null,"edition":null,"publisher":null,"year":null,"isbn":"9787302517986","isbns":["9787302517986"],"parsed":true,"ai_readable":true,"document_type":"book","page_count":490,"navigation_url":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","title_url":"https://workshop.closeclaw.top/ai/title/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF%E5%AF%BC%E8%AE%BA","fixed_page_url_template":"https://workshop.closeclaw.top/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","path_api_url_template":"https://workshop.closeclaw.top/api/ai/book/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page/{printed_page}","read_url":"https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71","page_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/page","search_url":"https://workshop.closeclaw.top/api/ai/books/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71/search"},"page":{"printed_page":199,"pdf_page":215,"physical_index":215,"physical_index_base":0,"printed_page_status":"recognized","page_sha256":"d5b2d8bcd61ca2c1d5da483a0b8230c097c7f7b9ea81e494152af84dd173934b"},"chapter":"第7章","content":"正向传播的目标是计算损失函数，而反向传播的目的是修正参数。在实际应用中，通常我们会在编程环境中记录价值函数值并观察其变化。我们会在第10章详细介绍正向/反向传播算法。\n\n7.3 神经网络的优化和改进\n\n7.3.1 神经网络的优化策略\n\n优化的目的是让算法能更快收敛，使得训练速度加快。优化是神经网络建模中极其重要的环节，它直接决定了模型的训练时间和投入产出的性价比。在神经网络模型搭建中，优化包括任何可以使算法更快收敛、模型训练加快的手段。下面让我们来看一些常见的优化策略。\n\n1. Mini-Batch\n\n为了加快训练速度，我们先不说算法，首先从读取数据“开刀”。传统的训练过程中的一个最大痛点是在漫长的迭代过程中，每一次都要读入整个样本集数据。样本量非常大的时候会成为限制运算速度的主要因素。为了让一次迭代数据缩短，我们是否可以考虑在一次迭代中仅使用部分样本数据？答案是可以的。Mini-Batch的原理是分批次读入样本数据，从而缩短一次迭代的运算时间。\n\n为了充分利用样本集，我们将样本随机分成若干组（batches），使得每一组有N个样本。假设共有m个样本，那么一共分成m/N个组（若N取值不能整除m，则进行取整，整除多出来的样本单独作为一组）。通常N取值为2的整数次方，比如128、256等。\n\nN通常被称为Mini-Batch Size，属于超参数之一。假设我们有m=2000条样本，Mini-BatchSizeN=256，那么第一次读取的是第1\\~256个样本（样本顺序已随机打乱），进行一次迭代（正向传播和反向传播）后，在第二次迭代时读取第257\\~512个样本，以此类推……第7次迭代读取第1537\\~1792个样本，第8次迭代读取第1793\\~2000个样本（本次样本量小于256）。在8次迭代后，整个样本进行了一次遍历。我们把到此为止的过程叫作一个周期（epoch)。在此之后重新开始下一个周期，整个样本集重新洗牌，随机分成8个组，然后重复类似上一个周期的操作，如此往复。\n\n由此可见，Mini-Batch和常规算法的最大区别就是，每次迭代时，读取的样本是不一样的。每一次训练过程是在样本集的一个随机子集上进行的，而不是整个样本集。这样一来大大缩短了一次迭代的运算时间，从而使得训练时间大大缩短。\n\n有的读者会想，这样做是否会影响收敛的轨迹呢？每次样本不一样，在整个训练过程刚开始的时候，参数的行进轨迹的确会显得不太规律，但经过一段时间后会步入正轨，最终逐渐向最优值靠拢。通常Mini-Batch只会缩短训练时间，不会给训练带来任何负面影响。所以在实际应用中，当样本量很大的时候，几乎总是会用到Mini-Batch。\n\n第7章 深度学习\n\n199","previous_page":198,"next_page":200}