README
后记
感谢大家陪伴我走过创建DeZero的旅程。希望通过本书,大家能对深度学习框架和深度学习本身有新的认识。如果能达到这样的效果,作为作者,我会非常高兴。在本书的最后,我想简单介绍一下本书的创作过程。
本书的写作开始于2018年10月左右,最终这本书用了大约一年半的时间完成。刚开始写作时,我想着花大半年的时间就能写完,不过大家也知道我每次都会预测错。这可能给周围的人添了麻烦,借此机会向他们表示歉意。
本书的主题是创建一个深度学习的“迷你框架”。之所以选择这样一个主题,主要有3个原因(也是我决定写本书的理由)。
第1个原因是现代深度学习框架已经过了过渡期,各技术社区在最大程度上确定了共通的功能。我认为现在是写本书的最佳时机。
第2个原因是还没有任何能在实现层面上帮助大家理解框架内容的图书或资料。就我自身而言,我从Chainer和PyTorch等的代码(框架内的代码)中学到了很多。我希望能以正确且有趣的方式来介绍这些技术,这是一件有价值的事情。
第3个原因是Chainer的代码很优美。Chainer设计得很超前,实现了Define-by-Run这个引领时代的方案。我被它的思想和代码所吸引,这也是我编写本书的巨大动力。不过Chainer的内容(对初学者而言)是庞大且复杂的。因此,我的目标是在Chainer的基础上创建一个具有现代功能并且尽可能简单的框架。
考虑到上述情况,本书的方向顺利地确定下来。不过我对本书的构成,即如何帮助读者更好地理解,如何传达其中的“乐趣”没有什么好的想法。当时有一段摸索和试错的时期。大约在开始写作三个月之后,我意识到只能以渐进的方式一边开发一边讲解。从那时起,我花了很多时间来思考合适的结构(按步骤创建的结构),由此就出现了本书中的60个步骤。
对了,当时我买了DeAgostini出版集团出品的周刊Robi,制作了用双腿行走的机器人Robi(这个系列共有70卷)。我一边读周刊,一边思考如何创建框架,这让我有了一段无比难忘的经历(Robi的制作过程很有趣,我很好地放松了心情)。
于是本书的结构确定了下来,写作过程开始有了节奏感。这使得我在写本书时感到非常愉快,尤其是我对开发自创的框架DeZero感到特别兴奋。我记得自己当时废寝忘食地编写代码,思考设计,还研究了其他代码。我再次从开发软件的工作中体会到了乐趣。
现在这本书终于写完了,我松了一口气,但也渴望继续写一些内容。虽然本书到步骤60就结束了,但随着离目标越来越近,我的脑海里也涌现出超越这个目标的更加有趣的想法。例如,我曾想增加一个步骤,用DeZero实现更高级的模型(GAN、VAE、DQN和BERT等)。我甚至想过继续扩展下去,将本书的内容扩展到步骤100。
但本书内容已经足够多了,也圆满实现了创建框架的目标。更重要的是,DeZero的发展超出了最初的预期,所以我打算把步骤100留作我自己(或读者)的“课后作业”。最后再次感谢花时间阅读本书的读者,谢谢你们。
谢辞
在本书的写作过程中,我得到了许多人的帮助,在此向他们表示感谢。Preferred Networks公司的得居诚也和我就Chainer的内容进行了各种讨论,斋藤俊太就本书的结构和内容给了我建议。此外,编写本书的想法源自我与西川彻、冈之原大辅、奥田辽介的交流。我非常感谢能有这样的机会编写本书。
此外,本书采用了公开审阅的方法进行校对。在公开审阅的过程中,手
稿在网上公开,任何人都可以阅读和评论。我最终收到了来自100多人的2000多条评论。在此,我向参与审阅的人表示衷心的感谢。正是因为有你们的帮助,我才能进一步打磨本书。当然,如果本书有任何不足或错误,都是我的责任,与各位审稿人无关。
本书依旧由O'Reilly Japan公司的宫川直树、岩佐未央、小柳彩良负责编辑。本书的设计(主要是排版和封面设计)由Top Studio公司的武藤健志、增子萌负责。承蒙各位帮助,本书才得以面世。最后我要感谢一直陪在我身边并给予我支持的家人,谢谢你们。
审稿
制作
武藤健志 增子萌
编辑
宫川直树
岩佐未央
小柳彩良