跳到主要内容

32 篇博文 含有标签「码农札记」

查看所有标签

博客搬家

· 阅读需 6 分钟

最近,WordPress 不断地推送充值建议,并且插入的广告也越来越多。现在写博客的人越来越少,不知道 WordPress 还能坚持多久。这让我开始考虑是否应该换一个博客平台了。考虑到 GitHub 的安全性较高,我利用年底假期的时间,尝试了将内容迁移到 GitHub,并且使用 Docusaurus 搭建静态博客网站。

三年前,我开始使用 Docusaurus 搭建电子书网站,对这个工具非常熟悉。它可以把 Markdown 格式的文本转换成网页,操作简单且功能强大。搭建静态博客和搭建电子书网站的方法非常相似,最主要的区别可能在于:书籍是按章节排列的,而博客则是按时间顺序排列的。因此,当我决定搭建静态博客时,Docusaurus 成了首选。

博客迁移的核心是将 WordPress 的内容转换为 Markdown 格式的文本。幸运的是,随着静态博客的流行,有许多开源工具可以帮助完成这一工作。转换好的文本再稍作调整,便可以用于 GitHub 的静态页面。

最麻烦的部分是转换之前的博客留言。静态网页本身无法支持需要动态变化的留言系统,因此只能借助外部服务来实现留言功能。既然博客内容已经放在 GitHub 上了,我选择了 GitHub 的 Discussion 功能来支持留言。不过,这意味着只有登录 GitHub 的用户才能留言。在 WordPress 平台上,留言都是 WordPress 用户们添加的。两个登录系统不兼容,肯定是没法直接搬迁的。估计我也只能用我的 GitHub 账号手动拷贝留言到新系统,我能做的也就只有尽量保留留言者当时使用的网名。

在搬迁博客的过程中,我也趁机回顾了一下我的博客历程。

作为中国最早的一批网民,我刚开始上网的时候,网络对于用户基本还是只读的,我主要利用它看看新闻查查资料。后来各种论坛和聊天工具繁荣起来,网上终于有了互动。二十一世纪初,我在上海工作,当时微软的 MSN 是小白领中最受欢迎的聊天工具,公司里人人都有账号。2004 年,MSN 增加了博客功能,于是我也开始发博客,分享我的生活和技术经验。回顾当时的博客,有很多内容是关于如何创建 MSN 网页的,现在都变成了死技术。再后来,MSN 博客改名为 Live Spaces,那是它最辉煌的时期。我在那段时间写了大量关于 LabVIEW 编程的博文,得到了很多网友的欢迎。在读者的鼓励下,我还将我的博文整理成书出版了。

这个 Wordpress 博客是我在 2007 年 5 月 13 日开通的,但之后并没有真正使用,所有的博文依然是发布在 Live Space 上。2010 年,微软突然放弃了博客业务,Live Spaces 关闭。我只好于当年 11 月 8 日把博客迁移到了 WordPress。当时我身在国内,而 WordPress 服务器在境外,访问起来并不方便。我也考虑过国内公司提供的博客服务。新浪、百度、搜狐等一些大公司都希望从 Live Spaces 分一些用户过去的。可是国内的博客服务都带有过滤和审查的,经常莫名其妙就提示有敏感内容不能发表。这让我非常反感,也就没有迁移到那些平台去。后来由于审查越来越严格,这些公司干脆都关闭了博客服务。

博客的黄金时代早已过去,我现在写博客的频率也远没有最初几年那么高了。但我很庆幸自己曾经记录了那么多生活片段,让我可以在现在和将来时不时地回顾一下。

查看或添加留言

AI 音乐创作

· 阅读需 2 分钟

最近这两年 AI 在文字和图像创作方面被讨论的非常多,相对来说,对于音乐的创作热度小一些。音乐包含的信息量远少于图像,AI 创作音乐会更轻松。实际上,网上能找到很多 AI 音乐创作的应用,就连贝多芬未完成的乐章都已经被 AI 续写好了。我自己尝试过几个网站,生成的音乐、歌曲算不上经验吧,但确实不难听,个人觉得超过了人类作曲家的平均水平。

但是音乐创作很难用来评价一个 AI 模型的好坏,因为它实在是太主观了,不容易建立客观的评价标准。文字或是图形创作都可以设立一些客观标准,比如,一些问题是有固定答案的、图像必须符合真实事物的构造。但音乐客观标准太不明确了,很多人觉得好听的音乐,在另一些人耳中都是噪音。

查看或添加留言

终于把整本书都翻译成了英文

· 阅读需 3 分钟

原计划是每翻译一段,就立即进行人工修正。然而,我后来发现人工校对实在是太耗时了。由于我的闲暇时间有限,若要认真地逐字逐句进行修改,估计整个过程需要一到两年的时间。因此,我决定暂时跳过人工校对这一步,先使用机器将其全部翻译成英文,日后再逐步进行优化。

我主要采用了 ChatGPT 进行翻译工作,并且也试验了其他几种大型语言模型。经过比对,ChatGPT 的翻译效果是最佳的。尽管如此,ChatGPT 也并不完美:阅读几行后,仍然能发现其翻译的内容与真人撰写的有所不同。它最明显的不足之处包括错误地翻译了一些专有名词,例如,LabVIEW 中的许多术语,比如 tool palette 等都被错误翻译了;此外,其用词偏好和写作风格也与真人不同。比如,“instrumental” 这个单词在平常几乎不会使用,但在 ChatGPT 的翻译中却频繁出现。我推测,这可能是因为 LabVIEW 与 “instrument” 高度相关,而 “instrument” 又与 “instrumental” 有关联,所以模型可能误以为 LabVIEW 相关文章就应当多使用 “instrumental”。

但无论如何,ChatGPT 的翻译效果已经远超以往所有的专业翻译模型。在大型语言模型兴起之前,谷歌翻译被认为是效果最佳的翻译工具,即便如此,其翻译内容仍然基本无法直接使用。现在,ChatGPT 已经可以当作一个相当靠谱的翻译工具了。

查看或添加留言

程序员的未来

· 阅读需 5 分钟

ChatGPT 出来之后,就不得不考虑一下程序员的未来前景了。我自己已经没机会转行了,主要是考虑儿子的将来学什么专业。

回看编程语言的历史,无疑是朝着方便人类使用的方向发展的。从最开始的纸带打孔,到汇编语言,再到高级语言,越来越“容易”了。即便是高级语言,这些年流行的 Python 也比二十年前流行的 C++ 要容易使用太多了。在不远的将来,在大多数领域,人们可能不再需要编程了。有什么要求,直接用人话告诉计算机即可。

通向这一目标的最大障碍在于让计算机完全理解自然语言。最近大语言模型的发展,基本上已经扫清了这一障碍。淘汰编程语言指日可待了。当然,程序员这个行业不会完全消失。仍然会有少量的底层开发岗位需要职业程序员。考虑到需求量的降低,而这些年又培养了大量的软件专业人才,到时候恐怕程序员会非常难找工作。

其实,就算人工智能发展的没这么快,我可能也不会建议儿子将来选择计算机软件作为专业方向。必须承认,过去二十年,软件工程师一直是收入比较高的行业,我也沾了光。但我觉得这种高收入并不能长时间维系,之前的高收入纯粹是由于各个行业都需要信息化,程序员需求量巨大,而培养程序员的速度暂时落后与需求。最近这几年,软件人才的培养速度飞快增长,很快就要把需求缺口填满了。将来这个行业的收入将不会与其它工程师有太大差别了。

除了收入还可以之外,软件工程师还真不是个特别好的行业。它有两点是我非常不喜欢的。

首先,软件工程师通常不会直接与终端客户有交流沟通。大多数程序员平时都只会与其它工程师、项目经理等团队成员交流。在这种情况下,一个人水平如何,客户无从得知。换句话说,软件工程师的水平高低不是那么直观的,很多时候,他们的业绩好坏,全在于领导的印象。像医生,健身教练等,都是直接为客户提供服务的。如果他们的水平真的非常高,服务特别好,那么是可以在跳槽或自己创业的时候带走客户的。但程序员就别想了,程序员技术再好也很难创业成功,倒是销售人员更容易创业成功。

其次,软件行业经验贬值的太快了。很多技术活是可以做一辈子的,比如财会、机械设计之类的。但在软件领域,那些需要花费大量精力专研的技术,几年之后很可能就都变得一钱不值了。同时各种新技术层出不穷,我就时时刻刻都担心自己被淘汰,总是精神紧张。当然了,乐观的人也可以把这视为一种行业门槛:只有能够终身学习的人,才适合做软件工程师。

查看或添加留言

大语言模型帮助写书

· 阅读需 6 分钟

最近一个多月,我几乎把所有的业余时间都用来写一本 Python 编程书:《Python 秘籍》

写这本书的初衷,不仅是为了深入学习 Python 本身,也是为了探索大语言模型在学习和写作中的新可能。现在回头看,感触颇深:大语言模型实在太强了。 在它的帮助下,我仅用一个多月,就完成了书稿的初步成型,虽然内容还不够完善,但已经达到了可供分享的阶段。如果没有它的帮助,达到同样的进度可能需要多花两到三倍的时间。

大语言模型极大地提高了我的写作效率。然而,效率的提升也带来了一些新的思考。过去需要三个月才能完成的工作,现在可能只需一个月。那么,从工作价值的角度来看,这种写作的意义是否也随之下降了呢?或许未来,类似的编程书籍对于读者的价值将大幅降低。毕竟,与其阅读一本书,不如直接向大语言模型提问来得便捷高效。

目前来看,可能还是写 LabVIEW 相关书籍的价值稍微更高一些。因为相对 Python 来说,目前大语言模型在生成高质量的 LabVIEW 编程资料方面还有较大局限性,所以,暂时这类书仍有市场空间。

大语言模型目前对我帮助最大的是它对自然语言的处理。我英语水平一般,自从有了大语言模型,无论写什么英语文章,我都会先让它修改润色。它不仅能纠正语法错误,还能帮助提升整体表达效果,达到我个人难以企及的水平。

正因如此,我决定把之前写的 LabVIEW 教程翻译成英文。我早有这个想法,但是因对自己英语水平的不自信而始终未能执行,但现在,我充满信心了(当然,更准确地说,是对大语言模型充满信心)。

最近,我已经开始翻译这本 LabVIEW 教程了:《The LabVIEW Journey》。 翻译时,我采用分步处理的方式:

  • 第一步:初步翻译。我先用大语言模型将中文内容翻译成英文。这一步的成果通常语法无误,但由于保留了许多中文句式,英文表达显得生硬、不地道。
  • 第二步:优化改写。接着,我用大语言模型对初稿进行改写,确保语言更加流畅自然,符合英语的表达习惯。
  • 第三步:人工校对。最后,我逐章检查译文,不仅是为了确保准确性,也借此机会提升自己的英语水平。

虽然生成的英文文本可能仍比不上专业母语作者的写作水平,但它已经远远超越了我的个人能力,语法更准确,用词更丰富。不得不感慨,计算机在写作领域的进步速度超乎想象。

目前,翻译过程中最麻烦的部分是如何将插图中的中文内容转化为英文。这部分工作只能暂时搁置,留待日后有空再处理了。

大语言模型虽然大幅提升了我的工作效率,却也带来了新的挑战。比如,在编程面试中,它的影响尤为显著。我们公司如今采用视频面试,可能是为了节省成本。自从有了 ChatGPT 等工具,明显感觉到应聘者的编程能力普遍“提升”了。

有些应聘者面试时,一边敲几行代码,一边时不时歪头看一眼屏幕。他们的表现让人难免怀疑是不是在“作弊”,但又没有确凿证据,也许这只是他们的编程习惯罢了。更麻烦的是,ChatGPT 不仅会写代码,还能解释代码,这让判断应聘者真正水平变得更难。我目前也没有什么完美的解决方案,只能希望公司能尽快恢复现场面试。

查看或添加留言

人工智能会有意识吗?

· 阅读需 5 分钟

这是个最近比较热门的话题。虽然我知道,如果宣称人工智能就快有意识了,会更吸引人,但我的确觉得目前的人工智能与“意识”之间还是隔着天差地别,我们这一代人恐怕是见不到有意识的人工智能的。

实际上,现在讨论人工智能与意识,很容易就脱离技术问题,去争论“意识”本身了,毕竟,人类对于什么是“意识”都还没有一个统一的观点。有些哲学流派认为意识与人体是一元的,不可分的。也就是说,只有人才有意识,没有人就没有意识。按照这一派的观点,除了人之外,其它的任何机器,动物,甚至智能超越人类的外星生物都没有所谓的“意识”。当然,也有其它流派不这么认为的。功能派就认为,意识相当于软件,与具体承载它的硬件无关。简单来说,如果机器能够通过图灵测试,就可以认为机器具有与人类相同的意识了。

即便采用功能派的观点吧,目前的人工智能算法也还无法做出可以通过图灵测试的机器。的确,如果限定提问问题的范围,人工智能很可能比真人回答的还要好。这就好比,如果限定问题只是数学计算,那么计算器都可以比人类回答的更快更准。目前,最接近通过图灵测试的人工智能算法(大语言模型),本质上是在拟合人类之前产生的文字。它极其善于整理已有的文本内容,如果问它一些高度依赖语言条文的问题,比如法律问题,它可以做到比人类回答的更好。但是,如果不限定问题范围,询问它一些依赖创造性的问题,它就无法给出满意的答案了。

人工智能算法也不是一点创造力都没有。算法中可以加入一些随机数,算法本身也可以把一些原本不关联的内容摆放在一起。这种内容的随机重排布也算是创新吧,不过人工智能自己是不能理解这些“创新”的,它无法判断自己的创新到底好不好,最终还是要交给人类来判断。

人脑也是神经元构成的,人工智能模型也由“神经元”构成的,当机器有了与人脑数量相当的神经元,是不是就会产生类似意识之类的东西了呢?这可未必。首先,人工智能中的“神经网络”只是借用了人脑中的神经系统的一些名词,它们之间并不是等效的。比如最基本的,人脑的神经网络是动态的,神经元之间可以新建连接,也可以断掉已有的连接;当前人工神经网络的结构是静态的,训练之前就固定下来了。实际上,我们对人脑的了解还非常有限,还没有完全弄清楚人是如何学习的。人脑有神经元,也不能证明人的“意识”就只有神经元参与,有些学者就认为量子效应也参与了人的思维活动。人类发现量子效应也还不到一百年,也许还有很多人类尚未发现的物理规律也参与了思维活动。总之,我对于目前人工智能的发展感到非常欣喜,但对于它发展出与人类相似的智能能力却没有那么乐观。

查看或添加留言

科普一下人工智能

· 阅读需 19 分钟

最近,我看了一位科普作家关于人工智能(AI)的几期视频,并留意到视频下的留言区,发现许多人对当前的 AI 技术存在一些普遍的误解。因此,我决定写这篇科普文章,希望帮助读者澄清一些常见的错误认知。

这篇文章专为非 AI 领域的读者而写,我会尽量用简单、易懂的语言解答几个广受关注的问题,例如:

  • AI 的行为是否连其设计者都不能理解?
  • AI 是否能表现出超出设计行为?
  • AI 是否具有创造力?
  • AI 是否能产生自我意识?
  • AI 为什么最近才能力爆发?

AI 发展历史

首先,让我们简要回顾一下人工智能的历史。人工智能的概念最早可以追溯到八十年前。从那时起,AI 的发展经历了数次热潮和低谷。每次技术突破都会让人们对 AI 的未来充满期待,同时也伴随着担忧,比如 AI 是否会威胁人类的工作岗位或控制权。然而,每次热潮过后,技术的局限性又让热情逐渐冷却,直到下一次突破带来新一轮的关注。

虽然我对人工智能的兴趣由来已久,但真正开始系统学习是在 2012 年左右。当时,"人工智能"这个词已经不再是热门话题,取而代之的是“机器学习”(ML)。严格来说,机器学习是人工智能的一种实现方法,实际上,我估计主要是因为当时 AI 正处于冷静期,不那么受追捧,而 ML 显得更为时尚、引人注目。这种术语的变化也反映了公众关注点的转移。

机器学习包含多种算法,比如朴素贝叶斯、决策树等。这些名字可能听起来陌生,但你可能听说过其中的一种关键技术:神经网络。在我开始学习 AI 的时候,神经网络并不受主流认可。虽然它的概念提出已有几十年历史,但当时在许多应用领域的表现并不突出,比如在图像识别中不如支持向量机,在自然语言处理中也逊色于隐马尔可夫模型。因此,很多人认为神经网络前景有限。

然而,技术的进步改变了一切。近年来,神经网络以惊人的速度崛起,成为 AI 的核心技术。如今,几乎所有引人瞩目的 AI 项目都依赖神经网络,因此有必要简要介绍其工作原理。接下来,本文提到的 AI 默认指代基于神经网络的模型。

神经网络的原理

要理解神经网络,可以把它看作是一个用来解决复杂问题的工具。我们可以将问题抽象为一个函数:

  • 比如,一个用来计算乘法的函数,它的输入是两个数,输出是它们的乘积;
  • 一个聊天生成的函数,输入是一些文字,输出是相应的回复;
  • 一个绘图的函数,输入是一些文字,输出是一幅图像。

对于简单的问题,比如乘法函数,我们可以直接使用已有的高效算法来解决,不需要神经网络。

神经网络主要应用于那些特别复杂的问题,比如通过文字绘图的函数,人们没办法直接为这类函数提炼出一个简单直观的数学公式。但问题还是可以解决:如果读者听说过“级数”这个概念,可能已经知道了,任何一个函数,都可以被看作是很多很多其它函数的叠加;如果没听说过也不要紧,只要记住这个结论就可以了:如果遇到一个极其复杂的函数,我们可以把它拆解成许许多多简单的小函数,再让这些小函数的结果叠加在一起,恰好可以实现复杂函数的功能。

假设我们有一个复杂的函数,它的输入是 x,输出是 y,可以将其表示为多个简单函数的叠加:

Y = (w0*x + b0) + (w1*x + b1) + (w2*x + b2) + ... + (wn*x + bn)

其中每个 (w*x + b) 的部分就是神经网络中的一个节点。而 w0 ~ wn 和 b0 ~ bn 则是神经网络中的参数。这些参数的值不是人为设定的,而是通过神经网络的训练过程去找到的。实际应用中的神经网络会比上述例子更加复杂,比如每个节点的函数会是更复杂一点的非线性函数,会有更多的层次等,但原理依然相同。

为了找到最适合的参数值,首先需要为模型构建一个训练集,例如,对于生成图片的模型,每个训练条目包含两部分:输入的文字和输出的图片。模型首先使用输入的文字作为输入,使用当前的参数生成一张图片,然后将其与目标图片进行比较,提取差异。根据差异的大小,调整网络中的每个参数,使其产生更接近目标图片的结果。不断重复这一过程,直到模型产生的图片与目标图片相似为止。

这一过程被称为“训练”,可以看作是模型模拟数据集或拟合目标函数的过程。通过不断优化,神经网络能够从数据中学习到复杂问题的解决方法。

AI 的行为是否连其设计者都不能理解?

当我训练好一个神经网络之后,我是否能够知道网络中每个参数的值呢?是的,只要想要,我就可以知道。从上文所述的模型训练过程可以看出,这是一个机械的数学计算过程。如果给定相同的初始值和训练数据,重复相同的训练过程,必然会得到相同的参数。但作为模型设计者,我实际上并不关心每个参数的具体值,因此我不会去查看每个参数的值。

这就造成了很多人对于神经网络的一个误解,他们会说:原来你都不知道神经网络里具体的数据啊,肯定更不知道每个参数的含义啦,你自己设计的神经网络你自己都理解不了,看来人工智能要摆脱人类控制了。

这种说法类似于对一个火箭设计者说:你连每个燃料分子燃烧的位置都不知道,你怎么能理解你设计的火箭呢?但实际上,设计火箭并不需要了解每个分子的情况,只要知道所有燃料作为一个整体能否提供足够的动力就可以了。同样的,神经网络的设计者也不需要,更不应该去纠结网络中每个参数的值,设计者应该去了解的是当所有参数作为一个整体时,能否拟合目标函数。

现在读者应该可以看出来了,所谓 AI 设计者不了解自己设计的 AI,纯粹是一种误解。其实,只要换位思考一下就知道这种误解的不合逻辑之处:读者自己是否理解 AI 的工作原理?如果理解不那么深刻,那么你能够设计出一个 AI 模型吗?如果你因为不完全了解 AI 而无法设计一个 AI 模型,又怎么能相信别人会在不了解 AI 的情况下就设计出了一个好用的 AI 模型呢?

AI 是否能表现出超出设计的行为?

神经网络的学习过程本质上是在尝试最大限度地拟合训练数据集,它通过不断调整网络中的参数来达到这个目的。然而,这也意味着神经网路被训练到极致,最多也就是完美得模仿了训练数据集。

上文用图片生成做过示例,再用文字生成为例讲解一下 AI 如何工作。大家可能觉得AI聊天写作文等功能挺神奇的,但实际上,文字的生成也可以被看作是一个函数:这个函数的输入是一些文字,输出是下一个要产生的字。

现在的大语言模型常常会使用网络上能够收集到的所有文章、对话作为训练集。这样,训练出的模型,就可以模仿网络上的文字。比如:把“我爱祖”三个子输入给训练好的 AI 模型,AI 模型由于在训练集中看到了大量“我爱祖国”这样的组合,于是就会输出一个“国”字。“我喜欢祖国”可能并不常见,但模型在训练集中会发现有大量的情况“喜欢”和“爱”这两个词是可以互换的。 所以,如果把“我喜欢祖”这四个字输入给模型,模型也会在这里输出一个“国”字。如果输入“小明:你喜欢祖冲之吗?AI:我喜欢祖”这几个字输入给模型,模型因为在大量的训练集中已经发现了,对话中的文字必须是上下文相关,所以会在这里输出一个“冲”字,再把“小明:你喜欢祖冲之吗?AI:我喜欢祖冲”几个字输入给模型,模型会再返回一个“之”字。

训练好的模型,可以写文章,可以解释法律、医学等问题,但无论它看上去多么令人惊叹,也只是在忠实的按照设计目标,去模仿网上的文章与对话。它无法超越设计者给它限定的范围。

同时这也可以解释为什么现在的大语言模型有时会一本正经的胡说八道:在遇到训练集中没有的问题时,它会提取一些最相关的内容进行拼凑,但它无法判断拼凑出来的东西是否正确。

AI 有没有创造力?

这要看你如何定义创造力了。一个 AI 在学习了猫头,狗身的照片之后,可以画出一张猫头狗身拼接在一起的照片。如果你觉得这算是创造力,那么AI确实具有了一定的创造力。

如果你觉得不算,只有 AI 画出了训练集中没有的东西才算创造,比如训练集中只有猫和狗,但模型却能画出一匹马。如果你这样定义创造力的话,那么 AI 没有创造力,AI 无法输出任何训练集中没有的东西,它最多只能把训练集中的内容进行整理拼接。

AI 能不能产生自我意识?

就目前AI的技术来说,AI 是绝不会产生自我意识的。目前训练 AI 的方法就是让 AI 去模拟训练集中的输入输出。我们可以脑洞一下,如果有一个 AI 模型突然就有自我意识了,训练程序让它画猫,它决定放飞自我,画了一只鸡。结果会怎样呢?结果是:因为它没有达到设计目标,这个模型被销毁了。

以目前的 AI 技术而言,AI 本质上与螺丝刀、扳手等工具没有什么区别,都是由人类设计和使用的工具:人类怎么操作它,它就怎么工作,除此之外无法做任何事情。任何人类不知道如何解决的问题,AI 也同样解决不了。比如,人类如果不知道如何证明黎曼猜想,AI 也无法自己证明。

总有人觉得 AI 参数这么多,结构这么复杂,说不定它自己突然灵光一现,就产生了自我意识呢?这个想法,就有点类似于,把组成生命的各种化学物质放到一个瓶子里,然后晃一晃瓶子,就指望里面的分子自己重新排列,构建一个生命体出来。我们有时候会有一些美好的愿望,希望自己并不了解的东西可以自发的产生魔法和奇迹。但是最终这些愿望基本都会落空。

为什么神经网络这么强大,却直到最近才功能爆发?

AI 最近爆火起来,是它在绘画,文字生成等领域都展现出了前所未有的好结果。那么为什么它之前没有,而现在突然就强大了呢?

早期神经网络主要是全链接神经网路,也就是网络中的每个神经节点都和下一层的所有神经节点相连。理论上,一层这样的神经网络就可以拟合任何函数,但在实际应用中,它始终面临着三个未能解决的问题:

  • 训练效率差,尤其是大型,多层神经网络,很多情况下根本无法训练。
  • 硬件不能提供足够的计算资源。要拟合复杂的问题,少量神经节点肯定是不够的,节点必然越多越好。
  • 缺少训练集,标注训练集是非常贵的。

近些年,以上几个问题都得到了实质性的改进。首先是算法和网络架构的创新解决了模型训练的问题。使用一些特殊的网络结构(如卷积网络、残差网络和注意力机制等)代替全链接网络,可以提高模型的训练效率和表现。这些结构可以构建上百层甚至更深的网络结构,“深度学习”由此得名。现在,那些最为知名的大型模型都是基于“变形金刚”这种链接结构构建的。

要解决更复杂的问题,必然需要更多的神经元。在硬件方面,GPU 的出现,为神经网络提供了足够的计算资源。

人为标注的训练集依然十分昂贵,但是这些年互联网的蓬勃发展使得网络上的文字和图像内容极其丰富,这些内容都可以被用来做训练。

于是乎,解决了以上几个问题的 AI 开始了新一轮的大爆发。作为相关从业人员,我希望这一次的热度可以坚持更长的时间。

查看或添加留言

AI 绘画发展的真快啊

· 阅读需 5 分钟

AI 绘画的发展速度比我预想的还要快。几个月前,Stable Diffusion 发布的时候,它们训练了一个通用模型,什么类型的图片都能生成,但无论什么类型都是马马虎虎。比如,对于人像的生成,多数都很模糊,甚至走样,只能看个大概。但是这几个月来,针对各种特定目标的模型都被训练出来了。这里当然少不了专门生成帅哥美女的模型,此外还有针对卡通、国画、油画等等各类绘画风格训练的特化模型。除了模型,各种辅助工具也被开发出来了,比如有些工具可以让用户摆放几根线段,代表人体骨架的姿势,然后模型就可以按照这个姿势生成人像。这就实现了对构图的精细控制。精细控制,配合上某明星的订制模型,就可以生成这个明星的任意姿势的照片了。

AI 绘画工具的出现对于我的帮助还是非常大的:我经常希望在自己的文档中添加一些插图,但是却没有绘画的能力。现在可以让 AI 来帮我画了,就算没那么完美也不要紧,有就比没有强。

半年前,AI 绘画勉强可以达到实用水平的时候,从新闻和论坛里看到的绘画从业人员的普遍反应是抵制。随着 AI 能力的加强,从业人员更多的是表示担忧了。我作为非专业的人员,可能体会不到那种危机感,但我还是觉得画师们并不需要太过担心的。在专业领域,那些老板们,无论有什么样的工具,也不可能自己去动手操作的,还是需要有专业人员来操作,差别无非在于一笔一笔得画,还是一条指令一条指令得画。工具毕竟是工具,新的工具不会取代人,只是会改变人们生产的方式。

被改变的可能不止是生产方式,或许还会有审美标准。AI 不但可以生成以假乱真的真人照片,还可以生成并不真实存在,但却是人们心目中的完美人像。当下,对大众审美影响最大的是明星们。将来会有越来越多 AI 生成的虚拟明星们出现。真人明星们就算化妆、整容、开滤镜,也不至于和真人容貌差太多,虚拟明星们长啥样就很难预料了。

我的 Facebook 上经常会收到骗子的好友申请。由于工作相关,我还曾经仔细研究过几个骗子的页面。在社交媒体上有很多知名度极低的小网红们,经常性的发布自己的生活照片视频等。骗子们会把这些内容收集起来,发布在一个虚假的账号下面,把这个账号伪装成某个帅哥美女的账号,然后行骗。估计以后骗子们的手法也要升级了,不需要再去收罗真人的内容,用 AI 生成全套的内容就可以了。

查看或添加留言

AI 生成的一些图片

· 阅读需 3 分钟

这几天在电脑上运行了 Stable Diffusion 玩了玩。这是我正的测试页面:https://qizhen.xyz/genimg

这个模型比 Dall.E 的小很多,所以才能在配置不高的个人电脑上跑。而且,我的电脑也只能勉强生成 512*512 的照片。虽然效果可能不如专业网站用的大模型,但有些作品已经很逼真了。我主要试试了生成真实人像以及和二次元人像之间的转化。Diffusion 模型不太擅长逼真的人像,程序生成的人像使用 GFPGAN 改善过的。在人像中,个人感觉这个模型最擅长生成白人年轻女性的照片。我也尝试了让它生成一些中国人的照片,但感觉都不是那么美,实际上多数生成的中国人照片都看起来比较别扭。很可能是因为它的训练集中就有比较多的白人年轻女性照片,或者也可能是因为我生长在中国,对中国人的面貌更敏感,更容易发觉异常。

先贴两张 AI 生成的仿旧照片,看起来还真挺像真的:

接下来几组图片,都是首先生成了左边的真实照片风格的图片,再根据照片转换成了右边二次元图片:

真实照片风格二次元风格

下面这两组图片是先生成的左边的二次元风格图片,再根据它生成右侧的真实照片风格图片:

二次元风格真实照片风格

可以明显感觉到,生成真实照片要困难很多。可能是因为人脑对所谓“真实”照片更挑剔吧。

下面两组是风景图片,感觉两种风格生成出来的图片区别远没有人像的区别那么大

二次元风格真实照片风格
查看或添加留言