我用ChatGPT写神经网络:一字不改,结果竟然很好用
### AI 生成 AI:ChatGPT 的构建与应用
自去年底推出以来,对话式 AI 模型 ChatGPT 已在整个社区引发了极大的轰动。它确实是一个令人惊叹的工具,宛若一个“潘多拉魔盒”,一旦找到合适的使用方式,可能会让你对其产生依赖。
作为全能助手,ChatGPT 的使用方式多种多样,从撰写论文到陪聊,这些都成为了常见的玩法。如果再大胆一些,既然 ChatGPT 是 AI 的“王者”,那么它是否能自己编写一个 AI 呢?
最近,一位机器学习领域的博主决定尝试这个想法,让 ChatGPT 构建一个神经网络,并使用 Keras 解决经典的 MNIST 问题。
MNIST 数据集是机器学习领域的经典案例。虽然这个手写数字数据集逐渐被现代数据集所取代,但它仍然具有重要意义,因为许多人在学习深度学习时,都是以 MNIST 作为验证算法的第一组数据集。
博主迅速展开了这一尝试,结果让人惊喜。ChatGPT 生成的代码看起来完美无瑕,甚至无需修改,这是一个不错的开端。
在选择损失函数时,ChatGPT 选用了分类交叉熵。博主要求重写这一部分代码,ChatGPT 随即将其替换为稀疏分类交叉熵,而更新后的代码依然能够正常运行,新的损失函数省略了标签的分类转换。
接下来,ChatGPT 生成的代码使用了全连接层,而博主期望能使用卷积层。于是,ChatGPT 根据指示进行了修改,增加了一个 Conv2D 层和一个最大池化层(MaxPooling layer)。
在最终的模型评估阶段,博主引导 ChatGPT 使用测试集编写评估代码,结果令人满意,且每一次回复都附带详细的解释。例如,在此次评估中,ChatGPT 解释道:“‘评估’方法接收测试数据和测试标签作为参数,并返回模型编译期间指定的损失和度量,输出测试的准确性,有助于了解模型对新数据的泛化能力。”
模型在训练期间使用了整个测试集作为验证数据。随后,博主又请求 ChatGPT 将其修改为训练数据的 20%。
博主还希望使用更小的 batch 及较少的训练 epoch。虽然这项任务可以在不借助 ChatGPT 的情况下完成,博主更愿意保持上下文的连贯性,因此还是将任务交给了 ChatGPT。
接下来,博主打算绘制训练过程中的训练与测试损失曲线图。ChatGPT 建议:“需要更改适合模型的线条,以捕获结果值。”
为了展示数据集中的一些示例,博主让 ChatGPT 编写代码输出图像与标签的结合,结果也非常完美,成功生成了 20 张图像的合集。
在构建模型时,查看其结构也是必要的。向 ChatGPT 提出这个问题后,它给出了模型的总结:
“模型摘要非常有用,但博主希望直观查看模型结构图。”于是他继续询问,最终得到了令人满意的回复。
之后,博主准备部署模型,让 ChatGPT 将模型保存到磁盘。
当博主想创建一个使用保存模型进行预测的类时,这项任务的提问方式引人注目,而 ChatGPT 提供的解决方案也毫无瑕疵。
最后,博主要求 ChatGPT 展示一个示例,使用这个预测类对 10 个随机图像的标签进行预测,还请求显示混淆矩阵。
不可否认,ChatGPT 的使用风格既简洁又美观。
完成所有实验后,博主将所有 ChatGPT 生成的代码公开,供大家尝试:
地址:[Google Colab](https://colab.research.google.com/drive/1JX1AVIfGtIlnLGqgHrK6WPylPhZvu9qe?usp=sharing)
—
### 见解
本文展示了 ChatGPT 在构建和调用 AI 任务中的能力,突显了这一强大工具的潜力和灵活性。通过与机器学习相关的具体应用,ChatGPT 在实际开发中展现了重要性,使得研究者和开发者能够更高效地进行实验、调试和优化,加速机器学习模型的开发进程。
这种互动式的协作不仅为技术社区带来了新的思路和方向,也预示着 AI 技术在未来将扮演越来越重要的角色。借助 ChatGPT 等工具,研究者可以更轻松地实现复杂任务,并进一步深入探索 AI 的潜力。这种技术进步无疑将推动整个领域的发展,形成更为广泛的应用场景。