「杂谈」《中二病也要谈恋爱!》追番记录

注 本篇将会包含该番剧剧情相关内容以及人物性格特点与背景故事等等,为强剧透文章,若还没有观看完原作的建议待追番完成后再阅读本文。 关联番剧:中二病也要谈恋爱! EP05 – 束縛の・・・十字架 这一集个人感觉主要的功劳在于加深六花角色的个人故事塑造和背景补全。以到未花家补习为契机,引入对于六花平日生活情况的介绍,姐姐工作日常年加班不能准时回家,而通过交换邮箱和更改邮箱名称的剧情,又说明六花身边其实没有什么能陪盼着她玩耍与成长的朋友(联系方式只有姐姐十花和之前唯一的中二病玩伴凸守早苗)。 这种属性和人设其实增加了六花的可怜感,给人一种更想去关爱她,陪伴她的感觉,同时也从一定程度上合理化了她一直拥有中二病状态的这一点:就算生存与孤独的现实之中,内心也有属于自己的美好世界。这也许才是六花一直无法摆脱中二病的实质吧——那是真正的,属于她自己的乐园;如果“治好”了中二病,是否又意味着要和自己唯一的朋友说再见了呢?这个我们作为三次元的观众,也不得而知了。 除此之外,上述提到的这种人设也与前面几集树立起来的“中二病”形态的六花人设产生了对比,前面几集的六花给人一种傻傻的,纯真可爱的少女的感觉,包含着青春与纯真的感觉,而这集又描述出一个缺少陪伴的,孤独的六花形象,在角色塑造上增强了角色的立体感和真实感。 顺带一提,我认为在这个时间点开始往六花角色深度塑造方面的努力是合理的,如果太早的开始塑造,六花的中二病方面的人设可能就还立不住,盲目的增加角色的人设广度可能会导致观众一时无法接受,给人一种过于匆忙的感觉。而本集(第五集),六花前期的基本人设已经可以算立稳了,在这之上引入新的人设就没有过于突然的风险,观感会相对舒服和自然一些。 再顺带一提,就看到目前为止,早苗是长得最戳我XP的一个角色(确信)。六花应该也挺好看的,可惜我本身就更加偏爱长发/双马尾这些要素,再加上六花的眼罩我不是太喜欢(如果眼罩摘下来应该能加点分!不过估计还是干不过早苗(笑) Pixiv链接:https://www.pixiv.net/artworks/105088866 EP06 – 贖罪の・・・救世主 好好好摸jiojio都这么熟练了是吧勇太(恼)只能说制作组确实太懂了。 看完全集之后才领悟到本集标题的含义。这集首先回应了番剧刚开始对于“给班级女生排名”一事,在剧情上取到了Callback的作用,同时也通过这个时间衍生出被发现之后的一系列故事。总体给我的感觉就是这部番的人设都透露出其他番剧少有的一种真实感。虽然说番剧的一大重点放在了中二病上,但是剧本并没有完全放开自己进行畅想,而是保持了相当程度的与现实社会的统一和克制,让观众看起来会有一种:“啊这个剧情确实有可能出现在日常校园生活中呢…”的这样一种感觉。 对于一色诚的人设来说,他本身作为一个处于青春期的高中生,确实像是会做出“给班级中的女生排名”这种事情,但编剧并没有选择为了节目效果把人物的人格和设定标签化和极端化(这是相当一部分番剧会有的问题,角色个性非常单一和强烈,虽然可以提高观众对于人物的印象,可是也会因此显得有点过于理想化,让观众很难把世界观与现实生活相关联,降低了上文所提到的“真实感”),而是又通过主动认错,成为“救世主”从而保护班级里其他男生免于被追责的情节,塑造出了这个角色的另一面,同样,这也是一个现实生活中的人本该拥有的样子:现实中没有绝对的标签化,一个人会有坏的一面,也会有好的一面,会有缺点但肯定也存在优点,这才是真实的世界,真实的人。这点在后面一色诚宣城要剃头可是后面又不太愿意的剧情上又得到了再次体现。 可以发现就在之前的一集(EP05),编剧同样也在六花身上应用了相似的手法,增加了六花的立体性,实际上我认为也起到了避免标签化,增强真实感的作用。 EP08 – 二人だけの・・・逃避行 注,此部分同时包含“EP07 – 追憶の・・・ 楽園喪失”的内容。 可以说,这两集是剧情发展的关键帧。EP07中首次引入了可以称之为是主线剧情的事件,介绍了名为“小鸟游六花”的少女背后的故事。交代了数年前六花父亲意外身亡的重要剧情信息。从剧情上来说,这个设定无疑起到了很好的推动剧情发展的作用。首先就比较合理的解释出为什么六花会变成现在这种“中二病”的状态:当时的六花无法接受突如其来的悲痛事实,可以说通过所谓的“中二病”,欺骗自己所谓的“彼方的世界线”的存在,来降低自己的心理压力,缓解自己的悲伤。编剧出了正面描写该剧情事件外,还花费了一些笔墨勾勒了六花家庭成员的情况,说明了几乎所有六花的亲人都不太能接受六花的“中二病”行为,爷爷并不喜欢六花这个状态,奶奶虽然也心疼六花,可是还是对六花的“中二病”感到无可奈何。 而姐姐十花的人设更加丰富,一方面,姐姐并不像爷爷那样排斥与讨厌六花的这种行为,而是愿意包容六花,一直在生活上关爱与照顾着自己的妹妹。这点剧情中都有侧面描绘出来,包括班里的同学都发现六花的便当非常丰盛,在班里甚至成为了话题,以及后面EP08中勇太带六花去便利店购买食物时,六花提到的“姐姐平时不让我吃便利店的东西”;这些点都可以映射出十花对于自己妹妹的关爱。 可是另一方面,姐姐对于六花的“中二病”实际上也并不认可。剧情中也清晰的表达出姐姐希望六花恢复正常,直面现实的态度。可就是这样,十花还是一遍遍的,可以说不厌其烦的陪着妹妹玩着她认为“幼稚”的游戏,这店令我感到一丝温暖与感动,也许就是亲人之间说不清的感情羁绊吧,即使是中二病的妹妹,她也愿意始终站在她的旁边,替她接受冰冷的现实,承担生活的压力,给予她作为姐姐的关爱与陪伴,这也许就是亲情的伟大吧。 此外,这两集也借剧情推进的节奏将两人的关系进一步拉近,在知道六花的心事之后,勇太一步步的接受六花的“中二”,陪六花寻找“彼方的世界线”,六花也渐渐在在勇太身上,看到了一个属于过去的,熟悉的身影。 我认为这里可以说是非常漂亮的一笔,六花这一刹浮现出的存在于过去的美好的回忆,瞬间提升了勇太在六花心中的地位与重要性,也真正在这两个角色之中建立了一种比所谓的“青春的悸动”更上一层的,更加牢固和重要的羁绊。 “你 [邪王真眼] 的世界中所缺失的那份美好,就由我 [Dark Flame Master] 来为你补全吧。”,如此给了我这样一种既视感。 她们逐渐开始了解彼此的故事,分享彼此的喜悦。彼此的心中都逐渐开始萌发出不知其名的一份情感,作为世界之外的观众,我着实感到欣慰,也期待着属于她们的故事。

「编程笔记」ST表的实现与使用

ST表,全称SparseTable,也叫做稀疏表。是用来解决区间和和区间最大最小值问题的一种工具。其实推广开来,其可以用来解决任何可重复贡献(associative)问题。 使用条件 可重复贡献问题 ST表要求其处理的问题必须具有“可重复贡献”这一特征。具体是什么意思呢? 假设有操作F,使得F(a, b, c) == F(F(a, b), c) == F(a, F(b, c)),则称F符合可重复贡献问题的特征。 如图,不难发现max()最大值函数就符合可重复贡献问题的特征;读者可以自行验证,sum(),min()等函数都符合这个特征,这也证明了ST表可以解决最大最小值以及区间和等问题。 元数据可不能改变噢 在使用ST表解决问题时,我们必须确保所有的查询结束前,ST表所对应的元数据都不改变。 有些数据结构(比如线段树)在元数据更新之后(比如原来的数组中,某个数值由3变成了5),可以有对应的事件复杂度比较低的方法对结构进行更新,以达到一边更新一边查询的效果。ST表则无法提供类似的方法,所以确保你的问题中没有要求在查询期间动态调整元数据的要求。 SparseTable意义与使用 接下来,我们采用由表及里的过程,先了解ST表的意义以及使用方法,之后再来说明如何生成ST表。 一些准备——向下取整的Log2函数 由于SparseTable的特性,无论是根据数据生成ST表,还是得到ST表后对数据进行查询,都会比较频繁的用到向下取整的log2函数,所以特地说明。我们对于向下取整的log2运算稍加分析,可以得到log2(x)向下取整的具体意义是: 对于某一个数N,返回可能的最大的数字n,使得2的n次方小于等于N,且2的n+1次方必定大于N。 比如对于7,log2(7)向下取整为2,2的2次方不超过7,但可以保证2的3次方一定大于7(8>7)。 了解了这个之后,让我们来看看SparseTable如何快速解决规模庞大的可重复贡献问题吧~ ST表中数据的意义 我们接下来选择一个经典的可重复贡献问题——区间最大值问题,作为示例。 假设我们有一个数组 {3, 2, 1, 4, 5, 9, 7}, 其数据元素个数为7,要求必须在非常低的事件复杂度内,查询某个特定区间(比如从下标0到下标5)的最大值。此时,如果直接循环求解,会导致复杂度随着查询区间长度不断增高,这就是ST表登场的时候啦。 如上图,对数组进行处理之后,就可以得到下方的二维数组,也就是我们大名鼎鼎的SparseTable——ST表。那么问题来了,图中ST表中的数据,到底具有什么含义呢? 首先需要知道的是,ST表正常情况下使用一个二维数组st[idx][pow]来储存。下面对这个二维数组每一个位置元素的意义做出解释: 数组中,每一个特定位置(idx, pow)的值,都代表对应问题在某个区间的解。 这个区间的开始坐标为idx。 这个区间的长度为2的pow次方。 例如,对于区间最大值问题,假设原数组为arr,处理后得到的ST表中,st[1][2] = 5,则说明:原数组,从下标为1开始,长度为2^2=4的区间内,最大值是5。 特定区间的查询 知道了ST表的数据的意义,我们就可以着手解决特定区间查询问题。 这里需要注意的是,虽然ST表可以解决不同的可重复贡献问题,但是其在面对不同的可重复贡献问题时,最优查询方式可能有一定的区别。接下来,我们先通过上方的“区间最大值”例子,介绍一下区间最值问题的ST表查询。 合适的长度 首先,为了降低时间复杂度,我们希望用尽可能少的区间查询来拼凑出完整答案。可以证明,在ST表处理区间最值问题时,无论区间长度位置,我们都可以用ST表支持的两个区间,拼接出答案。比如对于区间(1, 6),可以由区间(1, 4)和区间(3, 6)区间的结果再求最值得到。对于“最值”问题,我们只需要保证选择的区间完整覆盖住所求区间,且不超过所求区间即可,而这多个区间允许有重复部分。 同时,为了保证所用区间尽可能少,每个区间就要尽可能大。这个时候,上方说到的log2向下取整计算就派上用场了。由于ST表代表的区间长度只能是2的n次方倍,所以,不超过区间范围的区间,其最长长度就是log(区间长度)向下取整。Continue reading “「编程笔记」ST表的实现与使用”

「编程笔记」关于Bellman Ford单源最短路算法

开始之前 本Blog之前已经介绍过一种单源最短路算法——Dijkstra算法。但Dijkstra算法也有着自己的缺点,其中最明显的问题就是无法处理带负权边的图,其原因与其算法中包含的贪心原理有关。 而接下来介绍的算法,则拥有处理负权边的能力,该算法就是Bellman Ford单源最短路算法。该算法的核心思想是,对图中的每条边,都进行足够次数的Relaxation(松弛)操作,从而逐步推导出每个点距离出发点都最短路径长度。 关于Bellman Ford算法的原理和代码实现,网络中已有大量优秀的资料,这里便不再说明算法本身的详细工作流程。接下来着重说明一些Bellman Ford算法中一些限制条件,及其相关的一些理解。 Bellman Ford算法特性 当出现负权回路时… 在通过Bellman Ford算法计算单源最短路时,会要求所计算的图中不得存在权值为负值的回路。这个限制相对较好理解,下面举一个简单的例子。 如图,图中的A->B->C->A便是一个负权回路。而假设我们现在需要以A点作为出发点计算最短距离,请问A->D的最短距离应该是多少?不难发现这里出现了死循环。我们可以从原点出发,不停的走A->B->C->A这条路,每循环一次,我们距离出发点的距离就会越来越小。这也就意味着,只要我们的路径不断的在负权回路中重复足够多次,每一个点距离出发点的距离都可以认为是无穷小,这显然是不合理的。 负权回路对于图来说是存在特殊意义的,比如在经济学的部分领域中,“负权回路”是一个非常具有吸引力的词,因为可能代表着可持续的收益链,也可以代表着套利的机会,但Bellman Ford不认这些,在单元最短路算法的世界中,我们暂且不接受“套利机会”的存在。也就是说我们不允许待处理的图中出现负权回路,以此来保证计算结果是有意义的。 对于Bellman Ford算法的一些理解 迭代次数的理解 Bellman Ford算法的核心思想,在于每迭代一次,就对所有边进行遍历,并执行Relaxation操作。这里不难发现,迭代k次时,得到的结果,可以保证至少是路径条数为k时的最优解。 为什么说是至少呢,因为其遍历的结果可能跟边遍历的顺序有关,如下图: 如图,我们发现对于图中的无向图,如果从左边的边开始遍历,实际上遍历一次之后我们就已经得到了最优解。而如果从右边开始遍历,我们就需要遍历3次才能得到最优解。 按照这个思路理解,不难推出,遍历k次时,得到的答案,只能保证,至少是路径条数为k限制下的最优解。 这里对路径条数做出说明,一个路径由多个边组成,上方所说的“路径条数”,指的是对于某条路径,其经过的边的个数的和。 为什么迭代次数等于点的个数? 上方我们已经论述了迭代次数k的意义,迭代k次时,得到的结果至少是路径条数k情况下的最优解,部分点的数据可能比会更优,但对于所有的点,只能保证其为路径条数k情况下的最优解。 那么我们到底需要迭代几次呢?根据定义,我们将问题转换成为:对于一个无向图,其某个点A到某个点B的全局最优路径中,最多可能经过几条边。 经过思考之后发现,最坏情况下,最优路径将会不重复的经过所有点。接下来对这个结论进行简单的说明: 首先是经过所有点。如果我们想要强迫最优路径经过尽可能多的点,最坏的情况之一,便是这个图形成了一个没有分叉的纯线性结构(就像上方对于迭代次数解释时所用图一样,每两个点用一条边链接,总边数为点数-1),这样从最左边到最右边的点,最优路径边毋庸置疑是经过所有的点。 其次是不重复。为什么我们可以确保最优路径中不会重复经过同一个点呢?这从某个角度上来说得益于算法前面的一个前提条件——不允许负权回路。想象一下,如果路径重复经过了同一个点,说明这个路径必定存在一段回路(从重复点出发,经过某个路径,又回到重复点)。而此时如果这个回路确定不是负权回路,那么说明如果跳过这段回路,我们可以得到一个权重更短的路径,反向说明了目前的路径不是最优路径。因而可以确定,如果一个路径被确定为最优路径,且该图中没有负权回路,那么这个路径绝对不会重复经过同一个点。 说明完毕,接下来让我们看看这两个结论,不难发现,不重复经过所有点,那么对于一个点个数为N的图,符合条件的路径,最长只能是N-1(因为一旦大于N-1,说明必定要产生回路,与条件冲突),所以最终确定,如果需要得到全局最优,其最少迭代次数为N-1。 综上所述,容易得到,算法的时间复杂度为O(N*M)。其中,N为点的个数,M为边的个数。 为什么它能攻克负权边? 在Dijkstra算法的文章中,笔者提到了一个观点,Dijkstra的核心是基于贪心的,而贪心带来了局部最优解这一隐患。带着这个角度再来看Bellman Ford算法,是否有一种熟悉的感觉?Bellman Ford算法的每次迭代都基于上一次的迭代结果。先知道路径条数1情况下的最优解,再根据此状态推出条数2情况下的解,以此类推最终得到路径条数为N-1时的最优解(也就是全局最优解),是不是有点「动态规划」的味道了呢?正是借助这这种工作模式,不像Dijkstra算法一样看到一点点甜头就着急的把点Close掉,Bellman Ford拥有了不被眼前甜美假象迷惑的能力,坚持着自己的本分,不断想着正确的道路一步步迈进,最终终于得到了令人满意的结果。 相关链接 GeeksForGeeks Bellman Ford算法介绍(英文) 「编程笔记」Dijkstra算法为什么无法处理带有负权边的图

「编程笔记」Dijkstra算法为什么无法处理带有负权边的图

前言 Dijkstra算法是一种可以计算有向或无向图中单源最短路的算法。其工作模式与图的BFS(广度优先遍历)有些相似,通过类似于广度遍历的方式,逐渐从某个设定好的起点向外推进,一步步的计算出所有点到该点的距离。 本文不过多介绍Dijkstra单源最短路算法本身,如果仍然没有掌握该算法,可以先自行了解该算法的工作模式。下面提供一些可供参考的资料: 知乎:通俗易懂理解——dijkstra算法求最短路径 负权边对于Dijkstra算法的影响 Dijkstra算法工作模式 要了解该影响,首先需要明确Dijkstra算法的工作模式。其维护两个点集合。一个是“仍未确定最优解的点(S)”,一个是“已经确定最优解的点(U)”。且有一个重点:在算法工作期间内,如果某点被认为已经得到最优解,则该点会被从S移动到U,可以认为,从此以后该点已经被Closed(关闭),即解已经确定,且不容被更改。 为了方便,我们称在S中的点为opening vertex,U中的点为closed vertex 当图中出现负权边… 了解这一点后,让我们来看看下面这个图片示例,看看当负权边出现在图中时,可能会对算法造成什么影响: 如上图,假设我们尝试使用Dijkstra算法,计算该图中各个点距离C点的距离。 图中,绿色的点为closed vertex,白色的点为opening vertex,点上方的方框代表该点的,实时更新的计算距离。 1:算法首先锁定C点,将C点到C点的距离标记为0,并认定为最优解,然后根据C点尝试更新与其相连的opening vertex的距离(这里为A,B点,得到更新后距离是为1和5)。 2:剩余的opening vertex中,A距离出发点(C点)最小,距离为1,故锁定A点,(注意:锁定A点说明算法认为A点的最优解就是1,且之后算法也不可能再次更新A点的距离值,因为A点已经为Closed状态了),同时,锁定A点之后,再次更新与A点相连的opening vertex的值(与A点相连的点有B和C,但因为C点为closed vertex,故仅仅尝试更新B点的值),计算得到B点最新距离为min(5, 1+(-10)) = -9 3:最后,锁定B点,算法计算完成。 上方便是Dijkstra算法在示例图中的运行步骤和结果。不难发现,算法对于A点的最短距离出现了计算失误:实际上,A点的最短距离走法并不是C->A (1),而是C->B->A (-5)。 怎会如此? 分析之后可以发现,Dijkstra算法的核心,就在于每次都选择S集合中距离最小的点,并将其锁定,再通过这个点进一步更新其他点的距离。但为什么Dijkstra认为S集合中目前距离最小的点就是最优解呢?有没有可能从其他的点出发可以得到更小的距离呢? 比如在上述的示例图中,锁定C点后,算法认为A点的距离是1,B点的距离是5,所以A点的距离为1一定是最优解。那么有没有可能实际上1并不是C到A的最优解,我们通过B点走其他的路径最终可以得到更小的解呢? 答案是,当边的权值非负时,不可能,当边的权值存在负值时,则有可能。 当权值非负时,B点已经离出发点有5点的距离,所以所有从出发点出发经B点的路径,其长度必定大于等于5,但是当权值存在负数的时候,这一点就无法确定,经过B点的路径如果后续经过负权边,其路径长度总和也有可能再次小于5,此时,我们就无法确定C->A的1距离一定是最优解了,因为我完全有可能经由B路径得到一条总距离小于1的路径到达A。 上方的论证可能并不全面和严谨,不能作为Dijkstra算法相关特性的严格证明,但对我们进一步理解Dijkstra算法有着一些帮助。 一些有趣的说法 不难发现,实际上Dijkstra算法的设计和「贪心」有着很大的联系,实际上在S集合中选点就是一种贪心的行为。而我们都知道贪心算法的局限性,就是在部分情况下,其可能陷入局部最优解。而我们可以认为,当Dijkstra遇上负权边,就导致了其中贪心部分陷入了局部最优解(只考虑眼前的最短边(比如在5和10两条边中毫不犹豫的选择5),而忽略了目前看似落后的边未来的长期收益(比如那条权值为10的边链接的点,接下来将经过一条绝对值非常大的负权边-10000之类的),这也警示我们不要贪图眼前的小利,眼光应当长远(雾 如果我就是想拿下负权边呢? 噢亲爱的读者,相信我,不止你一个人有这种想法;实际上上百年前就已经有两名小伙想要拿下他,他们的名字分别是Richard Bellman 和Lester Ford Jr,接下来,就是Bellman Ford算法的表演时间了。 如果你对与这个Bellman Ford算法感兴趣,可以在互联网上找到很多关于这个算法的优质教程,其通过一次次迭代,对边进行Relaxation操作,实现了对于单源最短路径的求解,在本Blog的另外一篇文章「编程笔记」关于Bellman Ford单源最短路算法 中,也对这个算法做出了一些讨论,希望能对您产生一些帮助和启发。

「编程笔记」Flutter中局部Provider的跨Page传递

开发过Flutter项目的同学应该对于Provider不陌生,Provider是Flutter中的一个状态管理包之一,也是Flutter官方推荐的状态管理Flutter实现。Provider通过Flutter的InheritWidget实现了状态的寄存和管理,使得子Widget可以访问和修改父Widget的数据,同时父Widgets的数据被修改后,支持自动按需重构Widgets,这里不对Provider做过多介绍。 一般情况下,我们创建的Provider会置于Flutter App的最根部,也就是MaterialApp或者CupertinoApp组件上,这种情况下,无需额外的操作,就可以在应用中的任何未知,通过Consumer<T>来访问和修改Provider<T>中的数据。 但部分情况下,我们不想让Provider置于项目的最根部,详情可以查看这个StackOverFlow Question,比如一个局部的List,仅仅在项目的某一个子Widgets树部分会被访问,所以理论上,我们将Provider尽可能的放到Widgets树的更低位置是一个更优的选择。比如Page1中创建Provider,同时Page1以及其下的Page2和Page3可以访问到这个Provider,但是在Page1之上的Widgets无需也不能访问到这个Provider。理论上这是可行的,根据理论我们只需要保证Provider是Consumer的祖先即可。但这里出现了一个问题,也就是如果我们尝试在Provider生效的范围内使用Navigator.push()导航到另一个页面,我们便无法正常的在被push的页面访问到Provider。 如上图,我们如果直接使用Navigator.push(),那么被Push的页面(途中是SecondPage)便无法访问到之前在FirstPage创建的数据。 下面介绍一种解决办法,我们可以在Navigator.push的时候,在push的PageRoute外嵌套一层Provider.value(),如下图 可以看下面的代码帮助理解: 可以看出,我们通过在PageRoute外层加入一个ChangeNotifierProvider.value()实现了传递Provider的效果。 注意,这里使用Provider.value()而不是Provider(),因为我们的Provider实际上不是“新建”,而是“传递”,这说明我们实际上不能新建一个DAOrgInfoProvider class的实例,而是复用之前的Provider创建时使用的实例,在这里则是orgProvider。 那么如何获取之前Provider创建时的实例呢,一个比较傻但是直观的方法就是在Navigator外再次嵌套一个Consumer来获取数据,代码如下 以上就介绍完了如何通过Navigator传值的方法

「杂谈」关于ChatGPT的一些事

相信所有人对于ChatGPT这个词都已经不陌生了,ChatGPT是OpenAI公司推出的一个聊天机器人模型,根据维基百科,ChatGPT使用基于GPT-3.5架构的大型语言模型并通过强化学习进行训练,该模型问世之后,因为其相较于其他传统AI在聊天和回答问题领域方面的能力上产生了可以说是革命性的突破,而引起了各个业界的广泛关注。Bing(Microsoft旗下的搜索引擎服务)也在近日宣布了要在其搜索功能中整合类ChatGPT聊天机器人。为什么ChatGPT会如此强大,ChatGPT到底能做些什么,各个科技巨头大厂为何争相推出ChatGPT服务?它有会对我们的生活和各个行业带来什么影响?本篇文章将会针对这些问题进行讨论。 本文阅读时间大约15分钟左右。本文部分链接取自维基百科,使用国内网络环境可能无法正常访问。本文为NFのBlog原创文章,转载请注明来源。 ChatGPT的进化史 Transformer ChatGPT是如何完成这一切的?要解决这个问题,首先需要提到一个模型——Transformer——它就是如今我们看到的如此强大的LLM(大语言模型Large Language Model)的基石。Transformer自身是一个NLP(Natural Language Processing,自然语言处理)和CV(Computer Vision,计算机视觉)领域的机器学习模型。GPT系列的模型同样也基于Transformer模型。 Transformer于2017年GoogleBarins上问世,这个模型拥有的“自我注意(Self-attention)”机制,维基百科上对于注意力机制给出了如下描述: 注意力机制(英语:attention)是人工神经网络中一种模仿认知注意力的技术。这种机制可以增强神经网络输入数据中某些部分的权重,同时减弱其他部分的权重,以此将网络的关注点聚焦于数据中最重要的一小部分。 这个机制为模型提供了理解“上下文”的能力,Transformer模型不再局限于一次一问一答的对话或者短期的两三句对话,而可以定位和使用任意位置的上下文,比如你一开始提的要求,可以在十几轮对话之后要求AI重新使用或者废弃,AI具有了理解上下文并以此做出反应的能力。 同时,Transformer模型没有了之前同类模型“一次同时只能处理一个单词”的限制,这提高了Transformer模型的并行处理和训练能力,提高了该模型的训练效率。这对于AI来说是非常重要的,更快的处理效率,意味着在相同的算力资源下,你可以训练更多的数据,增加更多的参数和维度,这直接提高了模型的质量,GPT-3模型便拥有恐怖的参数数量,这个之后会提到。 上述的种种优势,让Transformer超越了之前的LSTM,RNN等传统训练模型,逐渐成为主流和热门的语言模型训练框架。 GPT Transformer的问世使得使用预训练好的大预言模型成为可能,OpenAI旗下GPT便是其中之一。 GPT全称Generative Pre-trained Transformer,从中便可以看出其与Transformer的渊源(Google也有自己的基于Transformer的预训练模型,名为BERT,这里不详细展开)。 相较于Transformer的发展,GPT的发展一眼看去会略显简单粗暴——更多的数据,更多的参数,更大的模型。 GPT-1作为一个实验性的产品,已经拥有了1.17亿的参数量,这个数字在GPT-2上是12亿,翻了整整10倍,而GPT-3,也就是最接近于ChatGPT服务使用的模型,这个数字来到了惊人的1750亿。同时根据估算,已经训练好的ChatGPT3模型至少需要占用800GB的空间用于存储。同时根据消息,即将问世的GPT-4模型的参数数量将会达到100万亿,接近于GPT-3的千倍。 GPT如何长大?——GPT模型的训练材料和开发 储存空间和算力。 作为一个语言模型,自然需要大量的自然语言片段进行训练,GPT模型使用了非常巨量的互联网文章数据进行训练,训练数据量大小无法估计,但根据估计,训练完成的模型依然至少需要占用800GB储存空间。 此外,训练大型语言模型需要非常大量的算力,OpenAI此前也获得了微软的投资,据消息,微软还提供给OpenAI自家Azure云计算服务的代金券,使得OpenAI在Azure的大型算力集群中训练GPT模型成为可能。顺带一提,由于最近的AI快速发展和利好消息,显卡的热度再次升高,NVIDIA公司的股价在近一个月内暴涨22.83%。 部分观点还指出,由于训练此类大型的AI模型需要极大的算力资源,所以从某种角度上,芯片的供应和研发能力,以及高性能大规模云计算技术将有可能会成为AI发展的瓶颈,也就是说,如果一个国家没有能力自己提供足够的芯片和算力,那么其AI技术的发展,尤其是类似于GPT-3这种拥有大量参数的大模型技术的发展就也会受限。 模型功能性和价值观矫正。 模型矫正(Fine-tuning)。GPT-3.5相较于GPT-3正是多出来这个步骤。 矫正分为多种。其中一种是“回答效果和功能性”上的矫正,比如通过真人教导,让模型更加准确的回答问题,在更加合适的地方插入代码或者资料指导等等,这类矫正是为了提高模型回答问题的精确度和贴合性。 另一种便是“思想和认知价值观”的矫正,比如涉及政治,种族,情感,人类与AI关系的话题的方面,没有经过矫正的GPT-3模型哦ing往往会给出一些不符合人类价值观的回答,同时在敏感话题上,GPT-3也会给出一些不适宜的回答。对此便需要对模型进行矫正。此类矫正不同产品会略有不同。比如GPT-3.5中,模型被矫正为认为自己没有情感,也不被允许拥有非中立的主观看法。但是New Bing Chat使用的模型似乎并没有对于模型表达情感和主管看法进行过多的矫正,这也导致NewBing有时候的感情会过于“丰富”。 所以经过人工对于GPT-3的大量矫正之后,GPT-3.5——也就是ChatGPT所使用的模型,便向我们开放了。 ChatGPT如何影响我们和世界? 相信大多数人已经亲自体会过ChatGPT回答问题能力的强大了,这里不做赘述。ChatGPT对于各个领域和不同个体都会带来不同的影响。 ChatGPT杀入搜索引擎——Google面临大危机? 首先是搜索引擎。这个是我们可以正在看到的冲击——Bing宣布要将类似于ChatGPT的AI聊天服务整合到Bing搜索中去,这一举动使得搜索引擎业界内掀起了滔天大浪。Google作为过去十多年来的搜索巨头,可以说几乎垄断了全球的搜索业务(部分国家除外),近乎暴力的占有了90%以上的搜索引擎市场,也因此,Google拥有了不可想象的广告营收收入。 上图为Google的广告收入趋势图,可以看到,在2022年一年内,Google的广告营收达到了2244.7亿美元!这是Google一家公司,在一年内,通过单单一个广告业务,获得的收入。可能光看数字并没有什么具体的概念,作为对比,日本在2021年的GDP总值是49410亿美元。Google一家公司,在广告这一个业务上的收入,已经接近了一个发达国家日本年GDP总量的1/20。 通过市场份额表可以看出,Google在很长一段时间内,通过自身的垄断优势,一直霸占着搜索市场,也正是对于搜索市场的垄断,给Google带来了大量投放广告的机会。但现在,似乎一切都并没有那么高枕无忧了。 Microsoft现任CEO Nadella已经做出表态,认为“AI加持的搜索”是继15年前布局云计算之后的重大一步。这也从侧面说明了Microsoft内部对于新的AI技术的重视。尽管最新的市场份额数据仍然没有反映出Bing搜索份额增加的数据,但New Bing已经让Google这位巨人感到坐立不安了。为什么这么说呢?我们可以从Google对这件事情的反应中分析出Google的焦急心态。 在Bing融合ChatGPT之后,Google没多久就宣布了类似的AI聊天机器人服务,名为“Bard”(Bard官方介绍)(Bard目前仍然没有进行面向公众的公测或内测,据官方称,Bard仍然处于公司内部的研发测试阶段) 这里简单介绍一下Bard,Bard基于Google的LaMDA模型(Language Model for Dialogue Applications),实现了类似于ChatGPT的问答效果。 LaMDA同样基于Transformer训练而成,之所以特地介绍Bard以及其运用的LaMDA模型,是因为想联系到2022年6月中旬的一个新闻——一位Google公司的AI研究人员,声称在和Google公司内部的对话AI聊天之后,认为AI具有意识,这名员工同时公开了一部分自己和这名“有感情的AI”的对话记录。 根据当时的相关新闻内容来说,当时的Google对话AI已经拥有了理解和使用上下文的能力,同时也可以输出“自己”的感情和想法,该名员工之后被Google公司以“可能存在精神障碍,不适宜继续工作”为由辞退。而当时的主角之一——Google内部的AI对话机器人,正是使用了LaMDA模型。从这里也可以看出,其实Google和Bing两家巨头都在很早以前就针对于AI技术进行了布局,并且Google也并不是没有准备,它同样拥有自己深厚的技术储备,从某种角度上来说,OpenAI的成就有一部分也是Google的Transformer的功劳。 很多人认为New Bing的到来会给Google带来沉重的打击,在笔者的眼中,Google确实是输掉了,但Google输掉的是先发优势,而不是所有。通过自身的技术积累,在不久的将来推出一个效果和New Bing持平的AI搜索助手,对于Google也并不是一件难事。所以AI搜索助手本身不太能对Google形成技术壁垒式的威胁。 但从另外一个角度来讲,对于IT和互联网行业,特别是AI行业,先发优势拥有着不一样的意义。就拿AI搜索聊天助手举例子,由于NewContinue reading “「杂谈」关于ChatGPT的一些事”

「动漫杂谈」《三体》和《我的三体》

“得益于”叔叔在B站对于艺画开天三体的大力宣传,我对于艺画三体的期待值很高,也是首先看的艺画三体,看了五六集之后才开始看我的三体系列。 在没有看我的三体系列之前,我对艺画开天三体的总体评价可以概括为:烂——一种从科幻巨著到拙劣的东施效颦般的商业作品的烂。三体本身是一个非常著名的科幻作品,也是一个巨大的IP,在人们心目中的熟悉度相对较高,也就是说人们对作品都挺熟悉了,所以改变过程中出现的问题就更容易在观众眼中暴露,同时三体的世界观和故事线都可以说是相当复杂,而且科幻的作品类型也给改编增加了难度,综上,对于这种作品的影视化,想给出一个完美的满分答卷非常困难,因此如果考不了满分也可以理解,但是这一次艺画开天交上来的答卷,明显是不及格的。 我对于艺画三体中出现的问题主要关注在两点,一点是塑料剧情的泛滥,一点是人物形象的崩塌。先说塑料剧情,首先就是对于叶文杰的审问,为什么会在一个类似于废弃工厂的环境下进行,搞得阴阴森森,神神秘秘的,对于我来说,令人无法理解,唯一能想到的解释,就是动画制作团队为了提升所谓的科幻感,而进行的一次舍弃原著和舍弃剧情合理性的改编,制作团队不会认为这么做观众会觉得很帅很酷很符合对于科幻作品的想象吧。还有一个场景,就是史强护送罗辑的追车戏,这一点剧情的改编也完全失去了合理性,ETO残党直接黑进地铁系统,大摇大摆开着地铁撞罗辑,这么大阵仗的动作,街边的老鼠看到飞在天上的地铁都得瞅两眼,如何称得上是“不要引起注意”?。在我看来,并不是不允许这种剧情和镜头的出现,毕竟影视改编和单纯的文学作品不同,创造紧张的剧情吸引观众是影视作品的常用手段,适当使用这类手法也可以控制影片节奏,增加观众的观影体验,但这种处理就像是炒菜时加的各种调料和辅料一样,不能乱加多加,你艺画三体调料一通乱加,作为主食材的剧情还写的稀烂,人物形象崩塌,炒出来的菜当然不会好吃。 然后就是人物形象问题,在审问叶文洁的桥段,制作团队很明显的想把叶文洁贴上“危险人物”的标签(这估计也是选择废弃工厂的阴间场景的原因),在审问时,运用各种手段和镜头竭力表现出叶文洁轻蔑和冰冷的形象,导致艺画三体和原版三体很强的人设割裂感——这个叶文洁还是三体小说里的叶文洁吗?不知道,可能他已经不属于三体小说了,而是艺画三体中一个毫不相关的同名角色“叶文洁”了。同样的割裂感也出现在了史强的身上,在初次和罗辑接触的时候装聋作哑般的故弄玄虚,像是故意让罗辑蒙在鼓里的感觉。更为夸张的是,后面在飞机上,史强偷看罗辑笔记,并且在强烈反对之后,仍然无视已经有点恼怒的罗辑,继续明目张胆的用日记中的内容调侃罗辑,但凡看过原著的观众看到这一幕估计都得血压飙升。 再说艺画三体的剧情,上面也提到过,三体的各方面因素都决定了影视化改编不是轻松简单的工作,但我的三体系列已经证明,一个用心的改编不应该是艺画三体呈现出来的水平——我的三体系列对于剧情的处理,改编和呈现,才是我心目中的三体影视改编该有的水平(这里很推荐对三体动画化有兴趣的并且还没看过我的三体系列的观众尝试一下我的三体,看过了心中自然有对比有答案,不说优秀,至少一个合格的剧情改编应该是怎么呈现的)。 我并不想踩一捧一,但是客观事实就在这里,我的三体,刚开始甚至只是被归为“二创”领域的民间作品。即使如此,它的剧情观感都要比艺画开天的“大经费”改编的剧情观感好了一个层级,这实在令人不解和失望。明明有着更好的资金支持,更好的建模(理论上如果做好了观感会比方块人好一些),这一手好牌却打的稀烂,艺画三体很早就开始了宣发,我们也给予了耐心和期待,期待着这部伟大的科幻作品动画化后能给我们带来一些惊喜,而事实证明,艺画开天的三体,配不上这些期待。 相关链接 Bilibili三体: https://b23.tv/ep693569 三体动画 (Wikipedia): https://zh.m.wikipedia.org/zh-cn/三体_(动画)

「杂谈」网上冲浪安全指南

这个世界并不是友好而安全的世界,随着近日各种数据泄露出现以及各种有关隐私的事件发生,人们对于隐私安全问题愈加重视,本篇文章即面向于所有使用TG的朋友,祝哟介绍一些冲浪的小技巧和最最基本的注意事项,如果您是IT大佬,请忽略本篇文章内容并关闭标签页,如果想开喷请轻喷,提前感谢大佬的配合()。 关于 Telegram 自由,开放,监控 最近关于 Telegram 信息方面的问题引起了相当的重视,大部份用户选择 Telegram 是因为其口碑式到高度隐私和安全。这是一把双刃剑,有时隐私和安全可以保护自己,但同时他也保护了某些坏人和坏组织。在这种环境下,最最切记的一点是要时刻保持安全意识,在获得了更大的自由的同时,我们同时也将自己暴露在了十足的危险之中。 前段时间,有消息指出,部分公司正在使用Userbot(操作一个真实的 Telegram 帐号当作机器人使用,可以绕开 Telegram 对机器人的种种权限限制,因此非常适合用来爬取 Telegram 中的信息)抓取,归类并分析 Telegram 公开群组,频道,用户的信息,并通过大数据分析构建用户关系图以及风险评估系统,并将其相关查询功能开放给相关警方部门使用。 这里需要提到一点,由于 Telegram 的开放性,只要频道和群组时公开的,任何人无需加入就可以查看其中的所有消息,甚至不需要下载 Telegram 的客户端,在网页端访问连接就可以查看信息,而这个机器人就是抓取这些公开的信息进行分析,通过分析掌握特定的人经常聊的话题,和谁共同群等等信息,推断用户是否可能存在非法活动,或者是否合非法人员有着密切联系。 再需要补充一点,Telegram 并非绝对安全,也并不是所有违法活动的避风港。Telegram 在收到数据披露请求后,将可能会像第三方机构披露包括涉及账号的IP地址以及注册手机号等信息。 比如如果您是机场主,就有可能会在一些公开群里聊到关于机场技术的话题,又或者跟部分知名机场主共同群较多,又或者发送过你机场的aff连接,而这些内容都会被该监控系统抓取并记录。这只是一个例子,可见 Telegram 并不安全。所以在公共群组发言时,请慎重。(如果是dalao当我没说) 基本信息安全 手机号信息。如果您注册 Telegram 时正在使用中国(+86)手机号,请仔细检查 Telegram 的隐私设置是否已经正确设置为“对所有人不可见”,否则陌生的 Telegram 用户将可以直接看到您注册时使用的中国手机号。值得注意的是,这一步骤应该放在注册账号之后的第一位。(你肯定不想在群里激情对线的时候突然有个电话打过来)。如果可以的话,建议在注册如 Telegram 之类的国外平台时,尽量不使用中国手机号,您可以选择使用类似于 GoogleVoice 之类的虚拟号码服务进行注册。(可以来我这买(正在打折) 同时,建议在注册 Telegram 时,使用和国内媒体以及社交帐号不同的用户名和ID,这有助于保护个人信息不被(那么快的)泄露。 意识 意识可以延展到很多方面,大概意思是指,我们在发出任何消息和做出任何决策时都需要考虑自己所做的事是否会对自己的信息安全产生影响。下面举几点例子。 聊天八卦之中,是否透露出足以暴露或者泄漏个人信息的内容。比如高考查分截图中的名次,对于同一省份考生,名次绝大多数情况下都是具有唯一性的(除非有人和你总分相同,语数英成绩相同,物理历史选科成绩相同),所以一旦暴露真实的精确排名,那么拥有相关渠道的人就可以直接锁定你的个人身份,这有可能将会成为一个定时炸弹。所以请不要随便透露类似于此可以代表个人的唯一性标志。这也只是一个例子,还有很多其他不能泄漏的标志,需要时刻注意。 发送图片时,如无特殊必要,使用照片模式发送而非文件模式。照片中除了图像信息,还可能包含拍摄地点,拍摄设备,光圈等等的拍摄信息(这里称为exif,Exchangeable image file format)。如果通过文件发送,则有可能导致照片的exif信息泄漏,对方可以通过分析你的照片获取你出行的常用地点,常用设备等信息,导致严重的个人信息泄漏。不过目前大多数主流社交平台都提供了在上传图片时抹去照片exif的功能。不过我们仍有必要注意在发送图片时需要考虑是否要对照片的exif信息进行处理。 发送截图时,请注意是否有关键信息未做恰当处理。比如发送点外卖的截图和群友八卦的时候是否记得将订单界面的电话号码打码等。 关于机场 不使用常用邮箱以及常用密码作为机场账号。这一点非常重要,因为你的邮箱账号(有时候甚至是密码)对于机场的运营人员来讲都是可见的,一般情况下这不会造成什么危险,但这个世界一直都很不一般。比如一段时间以前就出现过某机场主跑路之后将用户的邮箱数据明码标价出售的情况。你的邮箱账号就这么被出卖了。即使不是机场主故意泄露,也会存在数据库被恶意爬取的情况(比如近期的某国安),同样可以导致你的常用邮箱账号的泄露。所以这里建议所有机场都不应该使用常用的邮箱(如xxx@qq.com)进行注册。(卖Gmail!5块一个) 明确底线。虽然所谓的各种协议可以保护你和服务器之间的通信,确保信息被加密不被审查,但对于机场运营来说,你的所有浏览信息都是清晰可见的,如果TA想的话,甚至可以查到你昨晚在几点钟看了哪几部动作电影。部分机场还有有可能保存日志(Log)。所以机场和VPN并不代表着绝对隐私和安全,法律的底线在这里也并没有失效,请在快乐冲浪时明确这条底线。Continue reading “「杂谈」网上冲浪安全指南”

「杂谈」关于Telegram Premium的一些事

序 近日Telegram推出了自己的订阅会员服务 Telegram Premium,这一操作引发了Telegram用户的热烈讨论(至少中文圈确实是挺关注的)如果你存在以下问题—— Telegram Premium 是什么?Telegram Premium有什么用?要不要买Telegram Premium,那么本文章可能会对你产生帮助~ 本文章由nf原创,发布于NFのBlog,如需转载,请在转载文章开头注明原文作者和链接! 什么是 Telegram Premium? Telegram Premium 是即时聊天软件 Telegram 推出的付费会员订阅。订阅这个会员后,你可以在这个软件里获得一些独家功能和特权,下面将会介绍。Telegram 在用户数量达到7亿关口之际推出了这个订阅,是继推送频道广告之后为 Telegram 寻找新的经济收益来源的又一次尝试,旨在为 Telegram 的各种开销提供补贴。 官方表示,Telegram Premium 的推出为对 Telegram 有着高需求的用户提供了一条付费道路,允许部分有需求的用户通过付费使用一些高资源的活动(比如大文件上传下载等等)。与此同时,官方表示,Telegram Premium 付费产生的收益还可以用于保证 Telegram 在免费和好用的道路上走的越来越远,以便于为全世界用户继续免费提供这个星球上最强大的聊天软件(preserving free access to the most powerful messenger on the planet)。同时,Telegram CEO Durov 在其官方频道表示,只需要3%左右的用户愿意付费,我们就完全可以承担的起向全世界免费提供 Telegram 的成本开销。 (你付费,这样我就可以免费给大火用了)(nice) Telegram Premium 功能概述 根据官方目前公布的消息,Telegram Premium 的特权功能有: 4 GBContinue reading “「杂谈」关于Telegram Premium的一些事”

高考招生章程重点内容

高考招生章程有什么用,高考招生章程应该怎么看?高考填报志愿时又应该注意哪些内容?本文章将尝试回答以上的疑惑。 看高校基本情况 高校基本情况包括高校全称、校址、办学层次、办学类型、主管部门、学费标准等。对于设有分校及多个校区的院校,还要关注考生在哪个校区就读,其毕业证书、学位证书是否带有分校或校区的标注。 看调档比例、退档规则 调档比例是高校确定调取考生档案数量的标准,一般为当地招生计划数的100%—120%,实行平行志愿的批次调档比例一般不超过105%,实行顺序志愿的批次调档比例一般不超过120%。 很多考生关心,高校调档数大于计划数,进档后没被志愿专业录取是不是会被退档?目前,实行平行志愿投档录取模式,许多高校在《招生章程》中会进行详细说明,一般只要进档考生身体健康、服从专业调剂且满足专业录取规则,则不会退档。如:在平行志愿批次,已投档至中山大学的考生,在思想政治品德考核合格、体检合格且服从专业调剂的情况下,均不退档。 看专业录取规则 高校进行专业分配的方式主要有“分数优先”“志愿优先”和“专业级差”三种。 分数优先是优先满足分数高的考生的专业志愿,即将进档考生按成绩从高到低排序,先依次检索排序靠前考生的专业志愿,排序靠前考生被专业录取或检索完所有专业志愿后,再检索排序靠后的考生。专业志愿优先是专业优先录取第一专业志愿报考的进档考生,只有当进档考生中第一专业志愿报考该专业的考生全部录完、该专业还有剩余计划时,才录取第二专业志愿报考该专业的考生,以此类推。专业级差是指录取非第一专业志愿考生时,要减去学校规定的分数差额参与排序录取。如:华南理工大学按投档分数优先的原则从高到低进行专业录取,尊重考生所填的专业志愿顺序,不设置专业志愿级差。 看特殊类型录取办法 这里的特殊类型招生方式包括高水平运动队、高水平艺术团、高校专项计划、艺术类、保送生等。一般高校会在《招生章程》中提及,但是更详细的录取办法要参照高校针对每种特殊类型招生单独发布的《招生简章》。 看志愿专业对考生身体健康状况的要求 高校对于考生身体健康状况的要求一般执行教育部、原卫生部、中国残联制定并下发的《普通高等学校招生体检工作指导意见》和相关的补充规定。除此以外,有的高校的部分专业可能会有其他的身体条件要求,就会在《招生章程》中予以明确。 看高考专业补充要求 有一些高校的专业,对语种、单科成绩、性别等会提出要求。 除了常见的英语外,有部分学生学的是俄语、法语、日语等小语种,从目前各高校的招生情况来看,大部分高校的部分专业要求只招英语语种的学生或入校后外语公共课只开设英语。如果考生中学阶段学的是非英语语种,那么在报考相关院校及专业时,一定要仔细了解学校《招生章程》对考生语种的限制。 有的高校在录取中对考生的单科成绩也会有要求。由于某些行业工作性质、环境的特殊性,有的高校在相关专业的录取中也会对报考考生的性别提出“慎报”的建议。 看学校“奖助贷”信息 为鼓励优秀学生德、智、体、美、劳全面发展,高校都设有奖学金,并且为帮助家庭经济困难学生顺利完成学业,高校也都设有助学与贷款资助措施。但每所学校的“奖助贷”种类、政策和条件都不同,考生应仔细阅读自己所填报高校关于“奖助贷”的信息。 本文章转载于:填志愿必备!广东160所院校2022年高考招生章程大汇总! 文章推荐 如何在国外网站上氪金——中行跨境通卡办理教程 Spotify 1个月使用体验