所有文章
Gurobi 求解线性规划问题
本文针对钢铁企业对供应商的选择问题,构建线性规划模型,并使用 Gurobi 求解器进行求解。
题目背景
考虑一家小型的钢铁企业,该企业炼钢时使用的主要原材料是炼焦煤,每年的需求量在 100 到 150 万吨。现在需要帮助该公司安排明年的生产,选择原料的供应商。目前他们收到了 8 家供应商的报价,如下表。表格中的信息包括了每家供应商的最大供应量、是否为工会的公司、运输的方式、炼焦煤的可燃率、单位价格。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
---|---|---|---|---|---|---|---|---|
供应量 (千吨/年) | 300 | 600 | 510 | 655 | 575 | 680 | 450 | 490 |
工会U/ 非工会 N | U | U | N | U | N | U | N | N |
卡车T/ 铁路 R | R | T | R | T | T | T | R | R |
可燃率(%) | 15 | 16 | 18 | 20 | 21 | 22 | 23 | 25 |
价格 (¥/吨) | 49.5 | 50.0 | 61.0 | 63.5 | 66.5 | 71.0 | 72.5 | 80.0 |
GPT 论文精读笔记
Generative Pre-trained Transformer(GPT)系列是由 OpenAI 提出的非常强大的预训练语言模型,这一系列的模型可以在非常复杂的 NLP 任务中取得非常惊艳的效果,例如文章生成,代码生成,机器翻译,问答等,而完成这些任务甚至 并不需要有监督学习进行模型微调 。
本文梳理了 GPT 系列文章中介绍的的关键技术,包括:
- GPT-1 的解码器、微调、输入形式;
- GPT-2 的 Zero-shot 和 Prompt;
- GPT-3 的 Few-shot;
- Instruct GPT 如何通过基于人类反馈的强化学习生成有帮助的和安全的文本。
为什么 P 值是均匀分布的?
在学习多重假设检验时,提到了“P 值是均匀分布的”这个结论。本文对“单边检验”和“双边检验”的情形,证明了 P 值是均匀分布的。
直觉理解
直觉理解
以单边左侧检验为例(单边检验最好理解,不用考虑两侧的情况),可以这样想:
P 值小于 \(0.25\) 意味着什么?意味着观测到的统计量要小于 \(0.25\) 分位数。
观测到的统计量小于 \(0.25\) 分位数的概率是多少?就是 \(0.25\)。
也就是说,P 值小于 \(0.25\) 的概率就是 \(0.25\)。
把 \(0.25\) 换成任何一个 \(0\) 到 \(1\) 之间的值,都可以得到:P 值小于某个数的概率就是这个数本身。这就是均匀分布。
证明
单边检验
Transformer 中的 Positional Encoding Layer
在 Transformer 的模型结构中,Positional Encoding Layer 是将输入文本进行位置编码,使得模型知道每个词在文本中的绝对位置和相对位置。有时,当一个词的位置发生变化后,语义会发生巨大的变化,因此 Positional Encoding Layer 是至关重要的。
Transformer 原始论文中只给出了关键的编码公式,而我第一次看到这个公式时觉得晦涩难懂。深度学习课程的老师在课上讲解了之后,我还是不太明白。
终于,我找到了写得非常好的资料。作者从最简单的绝对位置编码(也就是将第一个位置编码为 1,第二个位置编码为 2,以此类推。这当然是最容易想到的方法。)开始介绍,一步一步引导我们为什么要用上面的公式。
基于 Bert 的中文问答机器人
最终训练的模型已经部署到 Hugging Face,请尝试输入一些简单的中文段落和相关问题
本文基于 Bert 的中文分词和问答的预训练模型,利用 10, 000 余条中文问答数据进行微调,构建了能够理解中文段落并回答相关问题的问答机器人。用自定义的数据进行测试,模型的效果基本能达到“正确回答小学三年级以下的阅读理解题”的水平。
这是我第一次完整地实现一个 NLP 项目。在这个过程中,我学习了如何使用预训练模型、中文分词、准备数据、文本编码与解码、设计问答机器的损失与优化目标、导出训练模型等技术,对问答领域的 NLP 有了更透彻的理解。
理论部分可参考李沐老师的 Transformer 论文逐段精读【论文精读】 和 BERT 论文逐段精读【论文精读】。当然,如果想要理解得更透彻一些,还是应该动手写代码,看看每一步到底在做什么,到真正实现出来看到模型结果的那一刻,是非常有成就感的。
不同 GPU 平台的训练效率对比
为对比不同平台上的 GPU 的训练效率的差异,我在 Kaggle、Google Colab、趋动云和本地的 Macbook Pro M1 Pro 四台机器上分别进行了训练。对于单个 Epoch:
- 付费使用的趋动云使用 2 个 GPU 并行训练,效率最高,单个 Epoch 共耗时 4 分 40 秒;
- 免费使用的 Kaggle 耗时 9 分钟,Google Colab 耗时 17 分钟;
- 在 Macbook Pro M1 Pro 上运行效率最低,即使使用了 GPU,单个 Epoch 仍预计耗时 3 小时。