反过来找答案,没那么容易

作者: 焦述铭

来源: 中国光学

发布日期: 2022-09-13 12:03:43

本文探讨了函数输入与输出之间的反向关系,以及如何利用智能算法如遗传进化算法和深度学习来解决光学器件逆向设计的困难任务。通过比喻和实际应用案例,文章解释了单向函数在信息安全和光学设计中的重要性,并展示了这些算法在提高设计效率和准确性方面的潜力。

在⼀间宽敞的厨房⾥,各种厨具应有尽有,当然还要有⼀位技艺⾼超的⼤厨,桌上原本摆着⼟⾖⼀个、茄⼦⼀根、⻘尖椒⼀根、⼤蒜三瓣、葱⼀根、⼆两⻝⽤油,酱油两勺、淀粉⼀勺、盐⼀勺,转眼间所有⻝材和调料就被加⼯成⼀盘热腾腾的美味地三鲜。如果把这些原材料看作是⼀个数学函数的输⼊,那道做好的地三鲜就是函数的输出,⼤厨使⽤各种⼯具做菜的过程就是函数本身。

当然函数有很多种,有的⾮常简单,⽐如只是把两个数加到⼀起,两个输⼊分别是 2 和 3,输出就是 5,有的则⾮常复杂,⽐如预测全球⽓候变化的复杂函数模型。函数输⼊和输出之间的反向关系也很微妙,如果端给你⼀盘地三鲜,你⼤概也⼀定能看出来⾥⾯有⼟⾖,茄⼦和⻘椒,把“函数输⼊”的原料说出个⼤概,也就是说这个函数从输出到输⼊是基本可逆的。

当然如果遇到的厨师是拥有祖传调料秘⽅的⼏⼗代传⼈,完全恢复出输⼊还真有点难度。但是对于求和的函数,告诉你输出是 5,猜测出输⼊并不难,⽽且你会发现输⼊有很多种可能性,不仅 2 和 3 可以,1 和 4 可以,0 和 5 也可以……但也有这样的函数,告诉你输出之后,获得对应的输⼊是⾮常困难的,哪怕只是寻找到很多个正确答案的其中⼀个也很难,除⾮穷尽所有的输⼊可能性进⾏搜索。

这样的函数是有去⽆回的“单向⻋道”,相当于是⼤厨会把熟悉的原料做成完全看不出本来⾯貌的超级⿊暗料理,会产⽣不可逆的输出结果。

MD5 和 SHA-1 是单向函数典型例⼦。这种单⽅向的函数并不容易设计出来,需要专⻔的数学原理,研究⼈员可是花了好多年才寻找到的,它们⽤途⾮常⼴泛。举个例⼦,你⼀定⾯对⾯和别⼈玩过⽯头剪⼦布,有没有想过在电话⾥怎么玩?看不到对⽅还能玩吗?

如果你和对⽅在电话⾥轮流说要出什么,你先说了⽯头,对⽅⼀定说布,对⽅先说了剪⼦,你⼀定说⽯头,谁“占得后机”谁就会赢。当然你可以和对⽅约定,我们都做个“不说谎话的诚实好孩⼦“,事先⼼⾥想好了出什么,到时候就不能变,听到了对⽅出了什么之后也不能改。但是到底究竟谁说了真话,谁说了假话,⼜如何知道呢?

单向函数在这⾥就可以显神通,⽐如⽯头,剪⼦和布分别⽤数字 1,2 和 3 来表示,每个⼈把⾃⼰要出的⼿势加上⼀段设定的随机数字字⺟,⽐如 1m94DxjHr5(表示出⽯头)或者 20nS5hs54Js(表示出剪⼦),然后各⾃把⾃⼰的数字字⺟串输⼊到单向函数,会得到各⾃不同的输出结果,两⼈玩的时候,先轮流说出⾃⼰的函数输出结果作为⼀个“防伪标签”,由于从输出⽆法看出输⼊,也就⽆法根据对⽅的信息临时改变主意,然后再轮流说出⾃⼰原本要出什么⼿势以及⾃⼰设定的密码是什么。

如果怀疑有⼈为了取胜⽽作弊,可以当场⽤函数验证声称的输⼊是不是对应预先说的输出,这样在电话⾥公平地玩⽯头剪⼑布就成为可能。

在光学器件设计中,有不少的任务就是这种类型,⽐如下⾯图 2 中这种多层薄膜结构,看起来像粤式早茶中的相邻两层深浅颜⾊不同的千层糕。千层糕⾥⾯红⽩层分别加了红糖和椰浆,⽽薄膜器件中则是⼆氧化硅和氮化硅两种材料很多层交替叠在⼀起。

虽然其中的每⼀层都⾮常薄(数⼗数百纳⽶级别,⽐⼈的头发丝直径还要⼩),但是每⼀层厚度怎样设置,可“事关重⼤”。我们并不需要像千层糕那样让每⼀层薄厚均匀,看起来美观,⽽是要优化设计为适当的薄厚,⽐如可以第⼀层⼆氧化硅很厚,第⼆层氮化硅很薄,第三层⼆氧化硅⼜变厚……。

当⼀束光照射到这样的多层薄膜结构并从另外⼀侧穿透后,不同频率(波⻓)的部分透过率会不⼀样,⽐如对于可⻅光,不同频率就意味着红绿蓝不同颜⾊的光,最后透射率与频率之间的关系会是⼀条曲线,⽽这⼀曲线正好与每⼀层薄膜厚度分布的密切相关。

我们⾯对的函数输⼊就是每层薄膜的厚度分布,输出是对应结构的透射率频谱分布,从输⼊获得输出可以在电脑上通过物理仿真模拟⽐较容易实现,⽽反过来,给定了⽬标的输出,要获得⼀组符合要求的⽬标输⼊,却是⼀个“逆向设计“的困难任务。

在各种光学应⽤中,我们会专⻔需要让某些频率的光透过,同时不让另外⼀些频率的光透过,事先会有⼀个像图 4 那样的⽬标透射率频谱分布曲线,我们的任务是利⽤函数寻找到对应的输⼊,也就是逆向设计出最佳“千层糕”的结构。

假设“千层糕”⼀共 10 层,每层的厚度有 10 种不同尺⼨可选,随机组合⼀下,最后可能的结构就⼀共有多达 10 亿种,虽然每次把其中任何⼀种结构输⼊给函数,都可以得到对应的输出曲线,但是逐⼀尝试数量巨⼤的所有可能的输⼊,“遍历全搜索”看哪个输出最接近⽬标,是⼀种“愚公移⼭”式的低效笨拙⽅法。

⽽计算机上有更智能的算法来帮助我们反⽅向寻找答案,像遗传进化算法和深度学习,可以⽤尽可能少的搜索次数获得正确答案。

遗传进化算法把⾃然进化的过程搬到了计算机上,可以⽤来解决光学器件逆向设计的问题。

假设每⼀种薄膜层厚度不同的分布⽽形成的结构就看作是⼀只动物个体,最开始先随机⽣成相当数量的不同个体,然后如上所说,我们⽤物理仿真函数,可以获得每只动物对应的输出,也就是透射率频谱分布,它们中有的和设计⽬标相对接近,获得的适应度分数会⾼⼀些,另⼀些适应度的分数会低⼀些,这也预示着这群“动物”的命运,适应者就有⽐较⼤⼏率留下来,不适者就有⽐较⼤⼏率被淘汰。

然后我们还会让分数⾼的个体交配产⽣后代,当然这⾥并没有真的交配,只是让两个结构的不同薄膜层厚度取⼀下中间数值,这样产⽣的新结构也意味着有可能产⽣更⾼的适应度。除此之外,我们还会产⽣⼀些随机变化,⽐如让⼀个较好的结构⾥⾯某⼀层突然变厚或者变薄,看适应度会不会提升,以探索新的可能性。

事实上,以上的过程就像我们寻找美⻝⼀样,⼀种⽅式是根据⾃⼰曾经去过的喜爱的餐厅,继续发掘菜单上没有尝试过的菜品,可以⽐较保险地获得满意体验,但天花板上限也可⻅,另⼀种⽅式是去光顾没去过的新餐厅,虽然有不确定踩雷的⻛险,但也许会有更好的发现,最优的策略就是将这两种所谓的“局部搜索”和“全局搜索”相结合。

遗传进化算法通过对⼤量个体的不断筛选,交叉和突变,经过⼀代⼜⼀代的进化,最后搜索获得的最优结构中不同薄膜层厚度的分布对应的输出曲线会与⽬标⾮常接近,完成了所希望的器件设计任务。在整个寻找“最佳千层糕”的过程中,100 亿种可能的组合中也只有很少⼀部分被尝试,遗传进化算法却可以利⽤较少的搜索次数,智能⾼效率地给出⼀个不错的逆向设计结果。

⽽近年来流⾏的另外⼀种⽤于光学器件逆向设计的智能算法则是深度学习,原本通过物理仿真函数,从输⼊获得输出容易进⾏,反过来则⽆法直接实现。不过这没有关系,本着“世界上本没有路,⾛的⼈多了,也便成了路“的精神,我们可以尝试⼤量不同的输⼊(当然相⽐ 100 亿所有可能性还是⼀个⼩数⽬),把从已知函数获得的对应输出结果也都记录下来。

然后我们使⽤深度学习这样⼀个模仿⼈类⼤脑神经元连接的⿊箱模型,对于从输出到输⼊的反向关系建⽴数据模型,⽤⼤量输出和输⼊对应的数据来训练深度学习⽹络,使得⽹络中的参数具有最优的数值,这样⼀个训练好的⼈⼯智能模型也就具备了从给定输出中推测输⼊结构的能⼒,也就是说给定⼀个所需的透过率频谱分布曲线,深度学习的输出就可以直接告诉你薄膜中每⼀层厚度应该怎样设计,也同样⽐遍历全搜索的⽅式聪明很多。

UUID: 71306c1e-4493-4708-a10e-0d533c842cd2

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/中科院物理所公众号-pdf2txt/2022/中科院物理所_2022-09-13「转」_反过来找答案,没那么容易.txt

是否为广告: 否

处理费用: 0.0110 元