脑et人脑最差熵值是多少0.995是好是坏

&p&首都,在现代政治定义上,通常是指中央政府所在地的政治中心。在政权更迭的历史上,占领经济中心就意味着控制了政治权利,因此大部分国家的政治中心和经济中心往往是重合的,如英国伦敦和法国巴黎。但仍有很多国家第一大城市并非其首都,而是选择了小城市作为首都政治中心,这是为什么呢?&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-421ca2f0093_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&602& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&602& data-original=&https://pic4.zhimg.com/50/v2-421ca2f0093_r.jpg&&&/figure&&p&英国伦敦国会大厦&/p&&p&&br&&/p&&p&经济和政治的双重中心通常能使得首都城市获得快速的发展,这样的城市很容易发展成“首位城市”。如法国巴黎截止2016年的1100万人口数量是第二大城市马赛163万的6倍,泰国首都曼谷与第二大城市清迈的人口数量差距更是达到了8倍。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-faaabf179ac3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&642& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/50/v2-faaabf179ac3_r.jpg&&&/figure&&p&&i&还有比法国更典型的么&/i&&/p&&p&&br&&/p&&p&然而有些国家,却在竭力避免首都的首位城市效应,甚至不惜将首都从大城市迁出。&/p&&p&&br&&/p&&p&今天的文章,就一起看看那些不是大城市的首都。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&美利坚&/p&&p&&br&&/p&&p&美国是有小城市首都国家的代表。&/p&&p&&br&&/p&&p&截至2016年,华盛顿市区面积177平方公里,人口为68.1万。而作为美国第一大城市的纽约都市圈,总人口在2014年以前就已经超过了2000万。纽约还坐拥联合国总部,在外交网络中的作用十分突出,为何最终却没有成为首都呢?&/p&&p&&br&&/p&&p&美国华盛顿的国会大厦&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-c375e9cfea2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&274& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/50/v2-c375e9cfea2_r.jpg&&&/figure&&p&&br&&/p&&p&故事还要从美国建国的时代说起。&/p&&p&&br&&/p&&p&美国自1776年在费城签署《独立宣言》以来,在相当一段时间内并没有设立中央联邦政府,首都也就没有设定的必要。随着1789年联邦政府正式成立,首都的确定才被提上了议程。&/p&&p&&br&&/p&&p&起草委员会向国会提交独立宣言的文件&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-68fb03bd5d893e175ca1a09bb83d8f20_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&423& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-68fb03bd5d893e175ca1a09bb83d8f20_r.jpg&&&/figure&&p&&br&&/p&&p&此时,美国仅有230万平方公里的土地,相当于两个内蒙古,人口更是稀少。但就是在这样一个小小的新生国家里,南北两方就已经对首都选址持有了不同的意见。&/p&&p&&br&&/p&&p&此时欧洲列强仍虎视眈眈&/p&&p&北美新生政权内部尚有分歧&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-576f8ee1dce68bd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&491& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-576f8ee1dce68bd_r.jpg&&&/figure&&p&&br&&/p&&p&北方议员主张将首都定为纽约,或是独立宣言的签署地费城,这两个城市也是十年内国会举行次数最多的地方,有作为首都的正当性。而南方议员却坚持将首都设置在南方。但是当时的南方经济以种植业为主,城市化还没有展开,并没有可以作为首都的大城市。&/p&&p&&br&&/p&&p&然而南方人在独立战争中贡献良多,南方主打的第一产业也是当时美国最重要的创汇手段,南方人的意见是北方精英不能轻易忽略的。更何况在当时刚刚独立的情势下,要是不照顾南方人的情绪,他们的亲英情绪很可能直接导致新生美国的分裂。&/p&&p&&br&&/p&&p&相比北部这些美国名城&/p&&p&东海岸南部州的城市&/p&&p&名气和规模都小得多&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-feb8eac6bce64fa_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&640& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/50/v2-feb8eac6bce64fa_r.jpg&&&/figure&&p&&br&&/p&&p&为了解决首都选址的问题,南北双方各自让步,最终决定在南北方之间的过渡地带规划一个新城市作为首都。&/p&&p&&br&&/p&&p&美国的三位开国元勋之一,第三任总统、《独立宣言》起草者托马斯·杰斐逊,美国宪法之父、第四任总统詹姆斯·麦迪逊以及第一任财政部长亚历山大·汉密尔顿在一次晚餐中初步规划为面积约259km?的一个菱形区域。&/p&&p&&br&&/p&&p&由“国父”华盛顿最终将具体位置敲定在南北方的分界线波托马克河畔,并为纪念哥伦布(Columbus)而将其命名为“哥伦比亚”(Columbia)。&/p&&p&&br&&/p&&p&波托马克河畔的华盛顿DC&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-4ba101a1f10d477f436afabd146b5d3b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&863& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/50/v2-4ba101a1f10d477f436afabd146b5d3b_r.jpg&&&/figure&&p&&br&&/p&&p&华盛顿逝世后,为纪念这位美国首任总统,国会才决定将城市命名为华盛顿市。&/p&&p&&br&&/p&&p&除了政治上的博弈之外,美国首都选择重新规划一个城市,也有其军事上的考虑。&/p&&p&&br&&/p&&p&虽然美国通过独立战争合法地取得了独立权,但这个新兴国家仍然忌惮大西洋对岸曾经的宗主国英国强大的海军震慑,若是将首都定在如纽约这样的港口城市,美国人必须时刻提防着不列颠人的卷土重来。&/p&&p&&br&&/p&&p&虽然打赢了英军但是还是害怕呀&/p&&p&图为英国将军查理斯于约克镇投降&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-fc431f2c0d1a38a7ef70fe3d9d596d20_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&494& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-fc431f2c0d1a38a7ef70fe3d9d596d20_r.jpg&&&/figure&&p&&br&&/p&&p&在之后的战争中&/p&&p&当时的白宫确实也被烧了&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-9f64300eeee3d6a3fa77_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&340& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-9f64300eeee3d6a3fa77_r.jpg&&&/figure&&p&&br&&/p&&p&而且尽管我们认为华盛顿是一个小城市,但这只是相对于其国内的纽约、洛杉矶,或是其他国家的首都如北京、东京而言。华盛顿在如今的美国国内至少也能算上一个“二线城市”,拥有排名前二十的总人口和全美最高的人均收入。可以说,除去政治中心的地位,首都还是一个美国人民喜爱的宜居城市。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-ad6faee23a7c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&874& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-ad6faee23a7c_r.jpg&&&/figure&&p&&br&&/p&&p&大洋洲和南美地区&/p&&p&&br&&/p&&p&同为英国殖民地的澳大利亚,在美国独立后的1788年才第一次升起英国的国旗,而正式取得独立地位则要等到一百多年后的20世纪。日,澳大利亚第一部宪法正式生效,一个合适的首都亟需人们确定。&/p&&p&&br&&/p&&p&英国能隔这么远统治澳大利亚&/p&&p&主要也是因为澳洲&/p&&p&人口少而分散,且海军弱小&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-bea68dee06ca0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&499& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/50/v2-bea68dee06ca0_r.jpg&&&/figure&&p&&br&&/p&&p&当时的澳大利亚拥有两个可以被选定为首都的大城市,分别是属于新南威尔士州的悉尼和维多利亚州的墨尔本。然而两个州为了争夺首都僵持不下,近十年的讨论也没有得到定论。&/p&&p&&br&&/p&&p&可选择范围其实也不大&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-a7e15b0d89fcef226acf2_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&375& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/50/v2-a7e15b0d89fcef226acf2_r.jpg&&&/figure&&p&&br&&/p&&p&最终,联邦政府决定,在距悉尼238公里,距墨尔本507公里的空地,也就是如今的堪培拉市,新建一个能够作为首都的城市。1912年,联邦政府举行了一次城市设计大赛,来自美国的设计师格里芬的作品从137个版本中脱颖而出,成为了新首都建设的模板。&/p&&p&&br&&/p&&p&沃尔特·伯利格里芬&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-8b40a6f7dcaec81f74ca53_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&634& data-rawheight=&784& class=&origin_image zh-lightbox-thumb& width=&634& data-original=&https://pic2.zhimg.com/50/v2-8b40a6f7dcaec81f74ca53_r.jpg&&&/figure&&p&&br&&/p&&p&新城市的取名“堪培拉”源自澳大利亚土著语,意为“汇合之地”,也正与其首都的身份吻合。&/p&&p&&br&&/p&&p&还真是“汇合之地”&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-6bb1c69afee943dffb3a9e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&750& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/50/v2-6bb1c69afee943dffb3a9e_r.jpg&&&/figure&&p&&br&&/p&&p&无论是华盛顿还是堪培拉,重新规划出一个新城市作为首都的方案,至少能使这个城市在城市环境建设方面受益匪浅。&/p&&p&&br&&/p&&p&华盛顿和堪培拉都是以首都目的来建设城市的,不约而同地选择了巴洛克式的城市设计,加上没有引入工业产业,注重城市绿地建设,因此都被誉为“花园城市”的典范。&/p&&p&&br&&/p&&p&堪培拉是一座空荡荡的城市&/p&&p&中央大道周边&/p&&p&就是全部的政治建筑景点了&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-25da45efeb601bc4b0a830_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&748& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/50/v2-25da45efeb601bc4b0a830_r.jpg&&&/figure&&p&&br&&/p&&p&不过作为政治中心,城市规划也必须让位于其政治职能,因此容易忽略其城市的其他基本职能。华盛顿更是由于其基于马车行驶规划的交通被视为交通条件最差的城市。&/p&&p&&br&&/p&&p&但或许这也是城市能更好行使其政治职能的另一种方式。&/p&&p&&br&&/p&&p&而同为国土面积巨大国家的巴西,新首都却不同于华盛顿和堪培拉仅仅满足于首都功能。1960年巴西将首都从沿海的发达城市里约热内卢前往内陆高原地区的巴西利亚,其目的就是希望能发挥首都的聚集效应,从而带动内陆经济的发展。&/p&&p&&br&&/p&&p&巴西很巨大&/p&&p&灯光却并不多&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-00f42bb00ccdf_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&607& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic2.zhimg.com/50/v2-00f42bb00ccdf_r.jpg&&&/figure&&p&&br&&/p&&p&在巴西历史上,历史名城萨尔瓦多和大城市里约都曾作为其首都,但自1822年巴西脱离葡萄牙取得独立之后,许多有识之士都主张在巴西中央高地规划一座新城作为首都,其中既有经济方面的考虑,更有避免受来自海上侵犯的国防要求。&/p&&p&&br&&/p&&p&然而在各股政治力量的较量中,迁都的计划长期搁浅。&/p&&p&&br&&/p&&p&葡萄牙人虽然在南美打下了大大的国土&/p&&p&但是主要城市和人口基本还是在沿海&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-93d93d3fa06fc2e6bcf5_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&966& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/50/v2-93d93d3fa06fc2e6bcf5_r.jpg&&&/figure&&p&&br&&/p&&p&20世纪40年代,地理上避开“二战”烽火的南美诸国获得了良好的发展前景,“发展主义”也在巴西确定了经济理论的主流思想地位。&/p&&p&&br&&/p&&p&发展主义观点认为,作为发展中国家,经济发展水平固然有所不同,但通过建立经济增长极,能十分有利于周围地区的经济发展。而巴西的经济重心显然全部集中于沿海地区,要发展内陆经济民生就必须设法在内陆人工建设一座大城市。&/p&&p&&br&&/p&&p&另一个严重的问题是&/p&&p&由于巨大的地盾&/p&&p&巴西沿海城市密集与狭窄的沿海地带&/p&&p&很难向内陆辐射&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-2b0ed862cf0f0f69b8da_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&815& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic1.zhimg.com/50/v2-2b0ed862cf0f0f69b8da_r.jpg&&&/figure&&p&&br&&/p&&p&1955年年底,高举“发展主义旗帜”的库比契克当选巴西总统,重申了迁都的必要性,并组建了“迁都委员会”,仅耗时不到四年,就在巴西高原拔地而起了一座新首都。&/p&&p&&br&&/p&&p&这座新首都在政治上很好地履行了从里约承接来的基本职能,在文化上则凭借创造性的城市规划和精美的城市建筑成为了世界上最年轻的“人类文化遗产”。&/p&&p&&br&&/p&&p&最值得一提的还是巴西利亚在经济上的成就:巴西内陆经济被带动起来,形成以农牧业、采矿业为主要产业的中部经济区,实现了国家发展中心向内陆转移的目标。&/p&&p&&br&&/p&&p&这就是巴西利亚&/p&&p&一座人工首都&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-d7b19e7d7df3cf68e76962_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&800& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic4.zhimg.com/50/v2-d7b19e7d7df3cf68e76962_r.jpg&&&/figure&&p&&br&&/p&&p&这样人工规划的首都也有其问题。尽管政治中心的存在有力地提振了内陆欠发达地区的经济,但同时也付出了运输成本高、人员流动不便利的代价。&/p&&p&&br&&/p&&p&但首都的选择,往往还是以政治目的为主导,经济因素常被放在次要的地位,这些代价也有偿付的意义。&/p&&p&&br&&/p&&p&&br&&/p&&p&&br&&/p&&p&其他地区的小首都&/p&&p&&br&&/p&&p&除此之外,相似的例子还有加拿大、印度和缅甸等。&/p&&p&&br&&/p&&p&加拿大由于要权衡英语区和法语区的利益,而定都渥太华;印度则是在独立后在原首都德里附近新建新德里,以避免几个大城市产业过分集中和城市职能的过分叠加;缅甸于2005年将首都从仰光迁至内比都,传言称是为了防止美国的袭击,也有人认为是缅甸希望加强对全国的控制。非洲亦有国家正在制定重新定都计划。&/p&&p&&br&&/p&&p&紧挨魁北克省(法语区)的渥太华&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-c292fe2d5dc5c35bc8faae_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&640& data-rawheight=&597& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&https://pic3.zhimg.com/50/v2-c292fe2d5dc5c35bc8faae_r.jpg&&&/figure&&p&&br&&/p&&p&总之,政治因素,往往是选择首都的首要考虑因素。&/p&&p&&br&&/p&&p&再次纵观这些奇怪的首都,我们可以发现,这些拒绝将首都设置在国内第一大城市的国家,无一例外都是非欧洲国家。在殖民时代的世界版图里,它们是相对于欧洲核心地位的边缘地区。将政治中心和经济中心分离,正是这些国家打破以欧洲为核心的世界体系的手段。&/p&&p&&br&&/p&&p&各大殖民帝国在20世纪初的版图&/p&&p&苏联可以视为俄国的变相殖民地&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-ce408e68bf05ea56d177d7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&478& data-rawheight=&331& class=&origin_image zh-lightbox-thumb& width=&478& data-original=&https://pic3.zhimg.com/50/v2-ce408e68bf05ea56d177d7_r.jpg&&&/figure&&p&&br&&/p&&p&这些国家通常是殖民时期欧洲列强的殖民地,得到发展的大城市往往也是由于在殖民时期扮演“殖民首都”从而与宗主国连接而获得的发展。当这些国家取得独立后,这类大城市仍是与核心地区直接相连的港口,是“边缘化”的产物,很可能会像“排水口”一样吸走边缘地区的财富。&/p&&p&&br&&/p&&p&虽然国家第一大城市并不是首都,但新首都的建立,意味着这些年轻的独立国家能够借此动员一片新领土,从而有能力在世界经济中自主竞争。&/p&&p&&br&&/p&&p&&br&&/p&&p&&i&参考文献:&/i&&/p&&p&&i&[1] 周定国. 澳大利亚国名及首都名称的由来[J]. 地理教学, -6.&/i&&/p&&p&&i&[2] 朱安远. 美国概况及美国首都变迁史(中)[J]. 中国市场, 2-126.&/i&&/p&&p&&i&[3] 莫振银. 美国首都变迁始末[J]. 语言教育, -7.&/i&&/p&&p&&i&[4] 范和生, 唐惠敏. 社会发展战略:巴西迁都引发的思考[J]. 拉丁美洲研究, ):35-39.&/i&&/p&&p&&i&[5] 科林·弗林特,皮特·泰勒. 政治地理学[M]. 商务印书馆, 2016.&/i&&/p&
首都,在现代政治定义上,通常是指中央政府所在地的政治中心。在政权更迭的历史上,占领经济中心就意味着控制了政治权利,因此大部分国家的政治中心和经济中心往往是重合的,如英国伦敦和法国巴黎。但仍有很多国家第一大城市并非其首都,而是选择了小城市作…
&p&本来还以为又要看到一个快手老铁了,没想到却是那么精彩的演出,太令我惊艳了,音乐的魅力啊&a class=&video-box& href=&//link.zhihu.com/?target=https%3A//www.zhihu.com/video/806208& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&& data-poster=&https://pic1.zhimg.com/v2-be5a44ba111dbd41d19eb3fd1e9e961e.jpg& data-lens-id=&806208&&
&img class=&thumbnail& src=&https://pic1.zhimg.com/v2-be5a44ba111dbd41d19eb3fd1e9e961e.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/806208&/span&
本来还以为又要看到一个快手老铁了,没想到却是那么精彩的演出,太令我惊艳了,音乐的魅力啊
&p&我刚好以前写过一个相关的东西,希望对楼主有帮助。
——————
作为理想主义者的分支,“理想”主题词注定贯穿INFP生命的始终。与INFJ的Ni,ENFP的Ne,ENFJ的Fe相比起来,INFP的主导功能Fi 似乎又意味着,其来源于其内心深处的这种“理想”颇具主观意味。
而这个“主观的理想”换个说法,就是价值观、人生观和世界观。 &/p&&p&自己的的价值观是否被他人公认或许并不是那么重要,毕竟INFP较少有兴趣强迫和支配别人。当自己的价值观不被他人认可时,在INFP矛盾的内心中甚至还会有一丝保有自己的与众不同而得来的小小得意。INFP与九型人格中的第四型重合最多,用形容第四型的“宁可保持痛苦以维持自己的独特”的倾向来描述自己,大多数INFP恐怕不会表示否认。 &/p&&p&然而,当你触及INFP的价值观底线时,他也会做反击。而且,INFP在捍卫自己的价值观时又极其的坚定,俗称的“兔子急了也咬人”,因为那是他内心世界信奉的世界运转方式和准则。 &/p&&p&可以说INFP是相当依靠内驱力的一类人,理想、意义、价值,是他们行动的燃料。但外部的驱动,不管是胡萝卜还是大棒,似乎都对他们不太奏效。于是,我们可以观察到这样一个显而易见的事实——INFP最乐于做那些符合自己价值观的事情。如果这份工作对他人有帮助,对人类有意义,INFP几乎有赴汤蹈火在所不辞的精神;如果在这份工作中找不到意义,INFP就失去了内驱力。单纯为了挣钱?No,No。 &/p&&p&在INFP对人生道路和职业道路的选择过程中,这种“主观的理想”发挥了极大的作用,尝尝驱使着INFP走上少有人走的道路。曾经有人说INFP是职场悲剧,这并非纯粹的危言耸听,但是的确只看到了事情的一个方面。 &/p&&p&“职场”并不等于“工作”,也并不等于“职业”。如果所谓职场只局限于资本主义原始积累时期的传统工作模式,或者办公室政治,那么INFP确实不擅长此道。(INTJ神马的恐怕也不擅长办公室政治吧。)然而,随着组织结构的多元化,人类价值观的多元化,“工作”和“职业”的概念早已大大拓展。 &/p&&p&相夫教子难道就不是工作的一部分,自我实现的一部分吗?做志愿者难道就不是工作的一部分,自我实现的一部分吗?不断完善自己的知识结构,使自己拥有智慧难道就不是工作的一部分,自我实现的一部分吗?做个心理学工作者,做个摄影师,或者只想在小城市务农过一辈子呢,这样的工作就不算工作了吗? &/p&&p&查尔斯o汉迪认为“工作”除有偿工作外,还应包括家务工作,义务工作和学习工作。各种工作中的balance是非常重要的,要靠一份工作满足你的物质需求,自我实现需求,价值观等等全部需求是很难的,但是通过工作的组合便有可能实现。每一份工作中都可能有你不喜欢的部分,比如枯燥的事务性工作等,但是可以把它看做你获得其他想要部分相应的偿付。&/p&&br&&p&&b&我在
将举办知乎Live【内向的你如何成为沟通高手】&/b&&/p&&p&&b&点击链接进入: &a href=&https://www.zhihu.com/lives/379968& class=&internal&&知乎 Live - 全新的实时问答&/a&
订阅后可以永久回听&/b&&/p&
我刚好以前写过一个相关的东西,希望对楼主有帮助。
——————
作为理想主义者的分支,“理想”主题词注定贯穿INFP生命的始终。与INFJ的Ni,ENFP的Ne,ENFJ的Fe相比起来,INFP的主导功能Fi 似乎又意味着,其来源于其内心深处的这种“理想”颇具主观意味…
&figure&&img src=&https://pic1.zhimg.com/v2-24e6c6d4cfca1f6b8f64_b.jpg& data-rawwidth=&750& data-rawheight=&485& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&https://pic1.zhimg.com/v2-24e6c6d4cfca1f6b8f64_r.jpg&&&/figure&&p&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-475b2e0b41b8cf84db2205_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&703& data-rawheight=&258& class=&origin_image zh-lightbox-thumb& width=&703& data-original=&https://pic2.zhimg.com/v2-475b2e0b41b8cf84db2205_r.jpg&&&/figure&&p&&br&&/p&&p&网络游戏及电竞流媒体业务正在崛起为一个巨大的市场。在去年的英雄联盟世界锦标赛中,仅一场半决赛就有高达 1.06 亿人观看,甚至超过了 2018 年“超级碗”的观看人数。另一个成功的例子是 Twitch,目前有数千游戏玩家在上面直播玩游戏,平台也早已收获数千万观众。而专门向游戏玩家提供个性化游戏分析报告的公司 Visor,正积极搭建模型,用于&b&实时预测游戏比赛中的胜负&/b&。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d3f2e50c2b90a0c0fbb3_b.jpg& data-size=&normal& data-rawwidth=&1055& data-rawheight=&570& class=&origin_image zh-lightbox-thumb& width=&1055& data-original=&https://pic4.zhimg.com/v2-d3f2e50c2b90a0c0fbb3_r.jpg&&&figcaption&Twitch上的游戏主播&/figcaption&&/figure&&p&&br&&/p&&h2&&b&能够预测游戏胜负的模型&/b&&/h2&&p&&br&&/p&&p&这种能够预测游戏胜负的模型会有很多用途,例如为玩家提供有益的反馈,帮助他们改进技术;从观众角度讲,会成为很好的参与工具,特别是能吸引那些对游戏尚不熟悉的潜在观众群体;最最重要的是,如果模型能比人类更准确的预测比赛,那么它在电竞投注方面会有史无前例的应用前景。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-88dc357aca4afca4fbbdc_b.jpg& data-size=&normal& data-rawwidth=&800& data-rawheight=&332& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-88dc357aca4afca4fbbdc_r.jpg&&&figcaption&守望先锋角色合影&/figcaption&&/figure&&p&&br&&/p&&p&&b&为《守望先锋》建模&/b&&/p&&p&我(作者 Bowen Yang——译者注)为游戏《守望先锋》搭建了一个模型。《守望先锋》是一款基于团队的多人在线 FPS 游戏。每个团队有 6 名玩家,每个玩家选择一个英雄(见上图),然后同另外一队作战。每场游戏在一个特定的游戏地图上进行,在游戏开始前就会确定地图。简单做个比喻,就跟足球赛差不多,有两支队伍,在某个球场上踢球。&/p&&p&&br&&/p&&p&预测一场游戏的胜负涉及到很多因素,这些因素大部分都是类别特征。例如,英雄的选择状况很大程度上预示了游戏结果,特别是在早期阶段。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-6edddd5ebc46962b_b.jpg& data-size=&normal& data-rawwidth=&500& data-rawheight=&921& class=&origin_image zh-lightbox-thumb& width=&500& data-original=&https://pic4.zhimg.com/v2-6edddd5ebc46962b_r.jpg&&&figcaption&例如低分段的比赛里“半藏+黑百合”的组合胜率奇低&/figcaption&&/figure&&p&&br&&/p&&p&因此,我们挑战就是如何处理这些类别特征。如果我只用独热编码,特征空间会很容易的超过几百个维度。不幸的是,几乎不可能收集到足够多的游戏视频去供给维度如此之高的“怪物”。&/p&&p&&br&&/p&&p&然而,这个凶神恶煞的“怪物”也是可以被打败的。在本文,我会讲解如何用“嵌入”(embeddings)为游戏中的角色建模,以及如何优化预测。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-8aced90d5f52f6bd119ad_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&736& data-rawheight=&635& class=&origin_image zh-lightbox-thumb& width=&736& data-original=&https://pic2.zhimg.com/v2-8aced90d5f52f6bd119ad_r.jpg&&&/figure&&p&&br&&/p&&p&上图为预测准确率 VS 游戏进度。预测由&b&逻辑回归、独热编码&/b&和&b&特征选择&/b&进行建模后得出。预测值在游戏即将结束时越来越准确,但在游戏开始阶段几乎都是随机猜测(50%的准确率)。我们的挑战是怎样优化游戏开始阶段时的预测准确率。&/p&&p&&br&&/p&&p&&b&团队组建&/b&&/p&&p&团队是现代多人在线游戏的核心概念,从 RPG 游戏如《魔兽世界》到竞技游戏如《Dota2》、《英雄联盟》、《守望先锋》,莫不如此。而英雄人物正是团队的组建基石。&/p&&p&&br&&/p&&p&《守望先锋》中的英雄可以分为3个子类别:进攻者(DPS)、防守者(坦克)、支援者(奶妈)。每个英雄都有他/她自己的长处和短处。一个团队的构成应当均衡配置(这样不会有特定的瓶颈)、密切协作(这样能优势互补),并且根据玩家的技术水平和当前地图组队。这跟篮球队的组队很像,比如要考虑前锋、中锋和后卫的配置。因此,在团队构成上是由一定的模式可循的。说得更正式些,某些英雄有可能往往共同出现在同一队中。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-c6b534aa54e6_b.jpg& data-size=&normal& data-rawwidth=&800& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-c6b534aa54e6_r.jpg&&&figcaption&一个典型的平衡配置的《守望先锋》队伍包含两名攻击者,两名防守者和两名支援者。&/figcaption&&/figure&&p&&br&&/p&&p&和均衡组合的篮球队很像。&/p&&p&如果我们更进一步讲,在某些情况下,人类和这些英雄也很相似。我们每个人都各不相同,仍然在这个社会上分工协作。在团队中工作,身处朋友圈子中,共享利益。而为《守望先锋》中的英雄建模的背后理念就如同为人类(或商业活动中的用户)建模。问题是,我们该如何以紧凑且有意义的方式为这些英雄建模。&/p&&p&&br&&/p&&p&&b&词汇组成句子&/b&&/p&&p&将词汇和游戏中的英雄进行类比,我们能获得直觉的感知。词汇包含了很多意义,如果它们组成句子或文章时,会更有意义。同样,游戏中的这些英雄背后也有很多“意义”或个性,比如有些英雄擅长进攻,有些擅长防守,如果他们组成队伍的话,情况会变得更为复杂。&/p&&p&&br&&/p&&p&传统上,我们用独热编码为词汇建模,但这很容易受到维度的影响,因为如果词汇很大的话,特征空间很容易就会有成百上千个维度。独热编码简单假设词汇相互独立,也就是说它们的表示相互正交,因此无法捕捉词汇的语义。另一方面,词汇也能用分布式表征(也叫词向量)来表示。在这种情况下,可以用更低维度的稠密向量(嵌入)捕捉到词汇的语义。&/p&&p&&br&&/p&&p&以分布式表征表示词汇的一种现代方法就是著名的 Word2vec 模型。关于这种模型已经有了很多详细解释和应用指南。&/p&&p&&br&&/p&&p&&b&超越 Word2vec&/b&&/p&&p&词向量的背后目的不仅仅是嵌入词汇。为了能利用嵌入的强大力量,我们需要考虑几个方面。&/p&&p&&br&&/p&&ul&&li&&b&相似性&/b&。相似性代表了输入之间的“重叠”。例如,“国王”和“王后”都代表统治者。输入之间的重叠越多,它们的嵌入就会越密集(维度更少)。换句话说,不同的输入会映射到相同的输出。如果输入从内在上正交,进行嵌入操作就没有意义了。&/li&&li&&b&训练任务。&/b&嵌入是从训练任务中学习到的(或预先学习到)。因此训练任务应和我们自己的训练任务相关,这样嵌入的信息才可以迁移。例如,用谷歌新闻训练 Word2vec,将其用于机器翻译。它们就是相关的,因为两者可以共享词汇的隐含语义。&/li&&li&&b&大量数据。&/b&如果想全面找出输入背后的相似性或关系,需要有大量的数据来探索高维度空间。通过分布式表征进行降维操作的“黑色魔术”很大程度上是由于有大量数据适用于非监督式学习。例如,Word2vec 模型就是用数十亿词汇训练而成。在某种程度上,嵌入就是独热编码输入和下游任务之间一个额外层的权重,仍然需要大量的数据来填充高维度输入空间。&/li&&/ul&&p&&br&&/p&&p&&b&团队:“CBOH”算法&/b&&/p&&p&这里的“CBOH”是“Continuous Bag of Heroes”的简写,你也应该猜到了,就是仿自 Word2vec 中的 CBOW 算法,即 Continuous Bag of Words。&/p&&p&&br&&/p&&p&根据我们上文谈论的几点需要考虑的地方,我逐步设计了 Hero2vec 模型。&/p&&p&&br&&/p&&ul&&li&&b&相似性&/b&。之前提过,《守望先锋》中的英雄可以归为一定的类别。这种相似性表明他们也能够通过分布式表征进行表示,而非独热编码。&/li&&li&&b&训练任务。&/b&Word2vec 会通过为中心词汇和语境词汇共同出现的状况建模来捕捉词汇的整体语义。同样地,游戏中能优势互补的英雄也会出现同一队伍中,也就是说,联合概率P(h0, h1,… h5)很高(h代表英雄)。不过,建模这种联合概率仍不是很直接。那么我们可以试着将条件概率P(h0|h1, h2,… h5)最大化。因为比赛结果的预测值就是概率P(结果|h0, h1,… h5, 其它因素),因此这两个任务高度相关。&/li&&/ul&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-01a641bfebd6eb2caeca_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic3.zhimg.com/v2-01a641bfebd6eb2caeca_r.jpg&&&/figure&&p&&br&&/p&&p&图:根据团队中5个“上下文”英雄,是有可能预测最后一个英雄(“中心词”)的。例如,如果队伍已有2个攻击者、2个防守者和1个支援者,那么剩下的那个很高概率是个支援者。&/p&&p&&br&&/p&&ul&&li&&b&数据。&/b& Visor 提供给我超过 3 万个游戏团队的队伍构成数据,用以预训练嵌入。和数十亿的词汇相比,3 万可能看起来是个很小的数目,但和词汇(维度 26,000+)相比,我的输入的维度也小得多(26 个英雄)。考虑到训练数据的需求会随着维度呈指数级增长,3 万这个数字实际上足够我训练模型了。&/li&&li&&b&模型。&/b&概率P(h0|h1, h2,… h5)和 Word2vec 模型的 CBOW 算法中所用的 P(中心词汇|语境词汇)的形式一模一样。更直观的讲,不像词汇,(h1, h2,… h5)的排列状况不影响概率,因此(h1, h2,… h5)的嵌入之和是输入的很好总结。模型的架构说明见下方。这里有个小技巧,除了P(h0|h1, h2,… h5)外,我们也可以这样建模 P(h1|h0, h2,… h5)等等,因此数据集可以有效的扩充 6 倍。&/li&&/ul&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-dcf9e23f6c3b8bae8fb8a6dbd9505323_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic4.zhimg.com/v2-dcf9e23f6c3b8bae8fb8a6dbd9505323_r.jpg&&&/figure&&p&&br&&/p&&p&上图是 Hero2vec 模型的架构,包括一个嵌入层、一个全连接层和一个softmax层。由于 softmax 层只有26个目标,无需进行负采样。&/p&&p&&br&&/p&&p&&b&将游戏英雄可视化&/b&&/p&&p&游戏英雄的嵌入(这里是 10 个维度)可以通过将它们投射到一个二维平面上(用 PCA)进行可视化,如下所示。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-0c326e79ebc3fd1c29e52bdca867fcd8_b.jpg& data-size=&normal& data-rawwidth=&800& data-rawheight=&589& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-0c326e79ebc3fd1c29e52bdca867fcd8_r.jpg&&&figcaption&游戏英雄的嵌入(投射到2维平面上)&/figcaption&&/figure&&p&&br&&/p&&p&很明显,嵌入成功地捕捉了这些英雄背后的游戏设计理念。他们趋向于根据自身的角色和类别聚集在一起。更有意思的是,嵌入还捕捉到了这些英雄超出类别特征之外的微妙特点。例如,路霸被很多玩家当成 DPS 英雄(2333333),虽然他被设计成坦克;尽管被认为是支援型英雄,“秩序之光”并没有怎么治愈盟友,所以她更接近于 DPS 英雄和坦克等。对于熟悉《守望先锋》的人来说,值得一提的是进攻型和防守型 DPS 英雄之间并没有明确的界限,建议玩家别真的按游戏设计的类别来使用他们。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-05b3be1d2ba04f90b956_b.jpg& data-size=&small& data-rawwidth=&690& data-rawheight=&690& class=&origin_image zh-lightbox-thumb& width=&690& data-original=&https://pic3.zhimg.com/v2-05b3be1d2ba04f90b956_r.jpg&&&figcaption&很难说秩序之光是一个传统的支援型英雄&/figcaption&&/figure&&p&&br&&/p&&p&因此,和英雄(或商业产品)的硬编码类别相比,嵌入在捕捉它们的个性或属性方面会更灵活更准确,也就是说,玩家(顾客)和游戏设计者(商家)都能从嵌入中获取更有用的信息和见解。玩家可以用它们更好的理解或享受游戏,游戏设计者也能用它们优化游戏的设计。&/p&&p&&br&&/p&&p&&b&Map2vec&/b&&/p&&p&目前为止,我聊到了如何为《守望先锋》中的英雄建模。在详谈英雄的嵌入如何帮助预测游戏结果之前,我想简单说说怎样处理另一个类别特征,也就是&b&游戏地图&/b&。&/p&&p&&br&&/p&&p&每局《守望先锋》游戏都是在一个特定的地图上开战(不同地图里各个英雄的优势体现也有所不同),队伍配置实际上也是根据地图所决定,也就是 P(团队|地图)。用贝叶斯定理重写 P(团队|地图)~P(地图|团队)P(团队)。那么可以将 P(地图|团队)建模为嵌入到地图中,如下所示:&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-aa6e7e40cd18_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-aa6e7e40cd18_r.jpg&&&/figure&&p&&br&&/p&&p&图:模型 map2vec 的架构,包含一个英雄的嵌入层,一个全连接层和一个 softmax 层。 Softmax 层的权重为地图的嵌入。&/p&&p&&br&&/p&&p&和上面的 Hero2vec 模型有一点不同,地图的嵌入来自模型最后的线性层。其灵感源自 Word2vec 模型中输入嵌入和输出嵌入都能用于表示词汇。&/p&&p&&br&&/p&&p&我们可以简单的将地图的嵌入可视化。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-70b0c9d1f23b4fb565f3f73e50da7c1c_b.jpg& data-size=&normal& data-rawwidth=&800& data-rawheight=&550& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic1.zhimg.com/v2-70b0c9d1f23b4fb565f3f73e50da7c1c_r.jpg&&&figcaption&地图的嵌入&/figcaption&&/figure&&p&&br&&/p&&p&嵌入也能很好的理解地图背后的游戏设计。对于那些熟悉《守望先锋》的朋友来说,可以看出单局地图上攻击区和防守区之间的差别要比不同地图之间的差别大得多。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-c42ba148d478dfc1344553_b.jpg& data-size=&normal& data-rawwidth=&1200& data-rawheight=&675& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic4.zhimg.com/v2-c42ba148d478dfc1344553_r.jpg&&&figcaption&国王大道这种巷战地图很适合法老之鹰、狂鼠这类具有范围伤害的英雄&/figcaption&&/figure&&p&&br&&/p&&p&这种架构也可以泛化,用于为任何共同出现的情况建模。例如,输入可以是一些电影,目标可以是喜欢这些电影的详细观众。训练整个流水线更衣让我们获得电影和观众两方面的嵌入。&/p&&p&&br&&/p&&p&&b&用游戏英雄的嵌入预测游戏结果&/b&&/p&&p&有了游戏英雄的嵌入以后,就能进一步优化游戏结果预测的准确率,如下所示:&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-e39772e0bbfba040c80b95_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&736& data-rawheight=&635& class=&origin_image zh-lightbox-thumb& width=&736& data-original=&https://pic2.zhimg.com/v2-e39772e0bbfba040c80b95_r.jpg&&&/figure&&p&&br&&/p&&p&图:预测准确率 VS 游戏进度。使用了 Hero2vec 嵌入后,逻辑回归模型在游戏早期阶段的预测准确率大幅提升。&/p&&p&&br&&/p&&p&在都使用逻辑回归方法的情况下,当输入嵌入英雄的嵌入时,其整体准确率要高于只将输入简单地独热编码。更有价值的是,英雄的嵌入真的能提高在游戏开始/中间阶段时的结果预测准确率,而且在游戏越早的时候越难预测结果。&/p&&p&&br&&/p&&p&队伍构成同样饱含信息的一个原因是,在游戏开始阶段,数值特征几乎没有任何方差,因此它们几乎没有用处。而随着游戏进行,越来越多的信息开始汇聚在数值特征中,因此这时队伍构成相对来说就没那么重要了。所以,在接近游戏结束时,由于数值特征的方差很大,已经大到足以揭示游戏的结果,这时两个预测值会出现重叠。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-6e127c26d9a9cb75a4d26_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&800& data-rawheight=&618& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&https://pic3.zhimg.com/v2-6e127c26d9a9cb75a4d26_r.jpg&&&/figure&&p&&br&&/p&&p&上图为游戏结果 VS 两个重要数值特征。在游戏开始阶段(左下角),数值特征中并无多少方差,结果几乎是重叠的。随着游戏进行(朝右上角发展),方差越来越大,结果很明显开始分离。&/p&&p&&br&&/p&&p&&b&结语&/b&&/p&&p&总的来看,本文讨论了如何用低维分布式表征来表示高维类别特征,然后解释了神经语言模型和 Word2vec 背后的逻辑。&/p&&p&通过预训练《守望先锋》中的英雄角色,我搭建了一个能预测比赛中团队正确率的模型,而且该模型在游戏开始阶段的预测效果很理想。&/p&&p&&br&&/p&&p&除了预测《守望先锋》输赢外,这种逻辑原理也能应用到任何我们感兴趣的领域。我很期待从嵌入中获取的这种知识将来能应用到多种任务上,未来我会继续探索此类问题。&/p&&p&&br&&/p&&p&本模型及相关代码参见我的 Git 库:&/p&&p&&a href=&http://link.zhihu.com/?target=https%3A//github.com/ybw9000/hero2vec& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&github.com/ybw9000/hero&/span&&span class=&invisible&&2vec&/span&&span class=&ellipsis&&&/span&&/a& &/p&&p&&br&&/p&&hr&&blockquote&&b&&i&参考资料:&/i&&/b&&br&&b&&i&&a href=&http://link.zhihu.com/?target=https%3A//blog.insightdatascience.com/hero2vec-d42d& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&blog.insightdatascience.com&/span&&span class=&invisible&&/hero2vec-d42d&/span&&span class=&ellipsis&&&/span&&/a&&/i&&/b&&/blockquote&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-690a19bebbe610bedc995edde03cdda9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1200& data-rawheight=&1000& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic2.zhimg.com/v2-690a19bebbe610bedc995edde03cdda9_r.jpg&&&/figure&&p&&/p&&p&&/p&&p&&/p&
网络游戏及电竞流媒体业务正在崛起为一个巨大的市场。在去年的英雄联盟世界锦标赛中,仅一场半决赛就有高达 1.06 亿人观看,甚至超过了 2018 年“超级碗”的观看人数。另一个成功的例子是 Twitch,目前有数千游戏玩家在上面直播玩游戏,平台也早已收获数千…
&figure&&img src=&https://pic3.zhimg.com/v2-cde650c54f269ebcfc493_b.jpg& data-rawwidth=&2033& data-rawheight=&998& class=&origin_image zh-lightbox-thumb& width=&2033& data-original=&https://pic3.zhimg.com/v2-cde650c54f269ebcfc493_r.jpg&&&/figure&&blockquote&Ps:喂喂喂,你萌不要光收藏不点赞呀_(:з」∠)_&/blockquote&&h2&emmmm...&/h2&&p&搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗?想知道simple RNN是如何一步步的走向了LSTM吗?觉得LSTM的工作机制看不透?恭喜你打开了正确的文章!&/p&&h2&&b&零、前置知识1:&/b&&/h2&&p&在上一篇文章&a href=&http://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzIwNzc2NTk0NQ%3D%3D%26mid%3D%26idx%3D1%26sn%3Deed826ec891ac%26chksm%3D970c2ddca07ba4ca33ee14542cff236f8edc1ff0ef063354dda0f8893%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《前馈到反馈:解析RNN》&/a&中,小夕从最简单的无隐藏层的前馈神经网络引出了简单的循环神经网络:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=y%28t%29%3Df%28X%28t%29%5Ccdot+W+%2B+y%28t-1%29+%5Ccdot+V%2B+b%29+& alt=&y(t)=f(X(t)\cdot W + y(t-1) \cdot V+ b) & eeimg=&1&&&/p&&p&它就是&b&无隐藏层的&/b&循环神经网络,起名叫&b&“simple RNN”&/b&。&/p&&p&这种方式即在每个时刻做决策的时候都考虑一下上一个时刻的决策结果。画出图来就是酱的:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-252ea7a35f4e710ef544_b.jpg& data-size=&normal& data-rawwidth=&2513& data-rawheight=&1434& class=&origin_image zh-lightbox-thumb& width=&2513& data-original=&https://pic1.zhimg.com/v2-252ea7a35f4e710ef544_r.jpg&&&figcaption&其中圆球里的下半球代表两向量的内积,上半球代表将内积结果激活&/figcaption&&/figure&&p&虽然通过这种简单反馈确实可以看出&b&每个时间点的决策会受前一时间点决策的影响&/b&,但是似乎很难让人信服这竟然能跟记忆扯上边!&/p&&p&想一下,人的日常行为流程是这样的。比如你在搭积木,那么每个时间点你的行为都会经历下面的子过程:&/p&&p&1、眼睛看到现在手里的积木。&br&2、回忆一下目前最高层的积木的场景。&br&3、结合1和2的信息来做出当前时刻积木插到哪里的决策。&/p&&p&相信聪明的小伙伴已经知道我要表达的意思啦。第1步手里的积木就是当前时刻的外部输入X;第2步就是调用历史时刻的信息/记忆;第3步就是融合X和历史记忆的信息来推理出决策结果,即RNN的一步前向过程的输出y(t)。&/p&&p&有没有更加聪明的小伙伴惊奇的注意到第2步!!!我们在回忆历史的时候,一般不是简单的回忆上一个积木的形状,而是去回忆一个更加&b&模糊而宏观&/b&的场景。在这个例子中,这个场景就是最近几次行为所产生出的抽象记忆——即“积木最高层的地形图”!&/p&&p&也就是说,人们在做很多时序任务的时候,尤其是稍微复杂的时序任务时,潜意识的做法&b&并不是直接将上个时刻的输出y(t-1)直接连接进来,而是连接一个模糊而抽象的东西进来&/b&!这个东西是什么呢?&/p&&p&当然就是神经网络中的&b&隐结点h&/b&啊!也就是说,人们潜意识里直接利用的是一段历史记忆融合后的东西h,而不单单是上一时间点的输出。而网络的输出则取自这个隐结点。所以更合理的刻画人的潜意识的模型应该是这样的:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-2a4cbff5ac9f95fc4c1ea8_b.jpg& data-size=&normal& data-rawwidth=&1550& data-rawheight=&1233& class=&origin_image zh-lightbox-thumb& width=&1550& data-original=&https://pic1.zhimg.com/v2-2a4cbff5ac9f95fc4c1ea8_r.jpg&&&figcaption&记忆在隐单元中存储和流动,输出取自隐单元&/figcaption&&/figure&&p&这种加入了隐藏层的循环神经网络就是经典的RNN神经网络!即&b&“standard RNN”&/b&。&/p&&p&RNN从simple到standard的变动及其意义对于本文后续内容非常重要哦。&/p&&h2&&b&零、前置知识2: &/b&&/h2&&p&在上一篇文章&a href=&http://link.zhihu.com/?target=http%3A//mp.weixin.qq.com/s%3F__biz%3DMzIwNzc2NTk0NQ%3D%3D%26mid%3D%26idx%3D1%26sn%3Deed826ec891ac%26chksm%3D970c2ddca07ba4ca33ee14542cff236f8edc1ff0ef063354dda0f8893%26scene%3D21%23wechat_redirect& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《从前馈到反馈:循环神经网络(RNN)》&/a&中简单讲解和证明过,由于在误差反向传播时,算出来的梯度会随着往前传播而发生&b&指数级&/b&的衰减或放大!而且这是在数学上板上钉钉的事情。因此,&b&RNN的记忆单元是短时的。&/b&&/p&&h2&&b&一、如何无损的运输梯度信息?&/b&&/h2&&p&好啦,那我们就借鉴前辈设计RNN的经验,从&b&simple&/b&版本开始,即无隐藏层的、简单完成输出到输入反馈的网络结构开始,去设计一个全新的、&b&可以解决梯度爆炸消失问题从而记住长距离依赖关系&/b&的神经网络吧!&/p&&p&那么&b&如何让梯度随着时间的流动不发生指数级消失或者爆炸呢?&/b&&/p&&p&好像想起来挺难的,但是这个问题可能中学生会解答!那就是让算出来的梯度恒为1!&b&因为1的任何次方都是1嘛&/b&( ̄? ̄)&/p&&p&所以按照这个搞笑的想法,我们把要设计的长时记忆单元&b&记为c(以下全部用c指代长时记忆单元)&/b&,那么我们设计出来的长时记忆单元的数学模型就是这样子喽:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=c%28t%29+%3D+c%28t-1%29+& alt=&c(t) = c(t-1) & eeimg=&1&&&/p&&p&这样的话,误差反向传播时的导数就恒定为1啦~误差就可以一路无损耗的向前传播到网络的前端,从而学习到遥远的前端与网络末端的远距离依赖关系。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-c53b699b1b48c70a6ee27a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&825& data-rawheight=&796& class=&origin_image zh-lightbox-thumb& width=&825& data-original=&https://pic3.zhimg.com/v2-c53b699b1b48c70a6ee27a_r.jpg&&&/figure&&p&路人:Excuse me?&/p&&p&不要急不要急,反正假设我们的c中存储了信息,那么c就能把这个信息一路带到输出层没问题吧?在T时刻算出来的梯度信息存储在c里后,它也能把梯度一路带到时刻0而无任何损耗也没问题吧?对吧( ̄? ̄)&/p&&p&所以信息的&b&运输问题解决了&/b&,那么就要解决对信息进行&b&装箱&/b&和&b&卸车&/b&的问题。&/p&&h2&二、如何将信息装入长时记忆单元?&/h2&&p&当然要先定义一下新信息是什么。不妨直接拿来simple RNN中对新信息的定义,即当前时刻的外部输入x(t)与前一时刻的网络输出(即反馈单元)y(t-1)联合得到网络在当前这一时刻get到的新信息,记为 &img src=&http://www.zhihu.com/equation?tex=%5Chat+c%28t%29& alt=&\hat c(t)& eeimg=&1&& 。即:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+%5Chat+c%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=& \hat c(t) = f(W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&&&/p&&blockquote&感谢评论区 &a class=&member_mention& href=&http://www.zhihu.com/people/42eb39dfddf7adaa3baa3ded57a8a7d6& data-hash=&42eb39dfddf7adaa3baa3ded57a8a7d6& data-hovercard=&p$b$42eb39dfddf7adaa3baa3ded57a8a7d6&&@hoshino042&/a& 指出此处笔误&/blockquote&&p&好,新信息 &img src=&http://www.zhihu.com/equation?tex=%5Chat+c& alt=&\hat c& eeimg=&1&& 定义完成。下面考虑把 &img src=&http://www.zhihu.com/equation?tex=%5Chat+c& alt=&\hat c& eeimg=&1&& 加到c里面去。如果把这个问题拿去问小学生的话,那么可能会兵分两路:&/p&&p&&b&1、乘进去!&br&2、加进去!&/b&&/p&&p&那么这两种哪种可行呢?&/p&&p&其实稍微一想就很容易判断:乘法操作更多的是作为一种对信息进行某种控制的操作(比如任意数与0相乘后直接消失,相当于关闭操作;任意数与大于1的数相乘后会被放大规模等),而加法操作则是新信息叠加旧信息的操作。&/p&&p&下面我们深入的讨论一下&b&乘性操作&/b&和&b&加性操作&/b&,这在理解LSTM里至关重要。当然,首先,你要掌握偏导的概念和方法、复合函数的求导法则、链式求导法则。有了这三点微积分基础后才能看懂哦。基础不够的童鞋可以跳过这里的讨论。&/p&&p&&b&论乘法:&/b&&/p&&p&乘法时即令长时记忆添加信息时的数学模型为:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+c%28t%29%3Dc%28t-1%29%5Ccdot+%5Chat+c%28t%29+& alt=& c(t)=c(t-1)\cdot \hat c(t) & eeimg=&1&&&/p&&p&因此网络完整数学模型如下:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=c%28t%29%3Dc%28t-1%29%5Ccdot+%5Chat+c%28t%29+& alt=&c(t)=c(t-1)\cdot \hat c(t) & eeimg=&1&& 公式【0.1】&br&&img src=&http://www.zhihu.com/equation?tex=%5Chat+c%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=&\hat c(t) = f(W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&& 公式【0.2】&br&&img src=&http://www.zhihu.com/equation?tex=y%28t%29%3Df%28c%28t%29%29+& alt=&y(t)=f(c(t)) & eeimg=&1&& 公式【0.3】&/p&&p&为了计算方便,还是像之前一样&b&假设激活函数为线性激活&/b&(即没有激活函数。实际上tanh在小值时可以近似为线性,relu在正数时也为线性,这个假设还是很无可厚非的),这时网络模型简化为:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+y%28t%29%3Dy%28t-1%29+%5Ctimes+%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=& y(t)=y(t-1) \times (W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&& 公式【1】&/p&&p&假如网络经过了T个时间步到了loss端,这时若要更新t=0时刻下网络参数V的权重,则即对t=0时刻的参数V求偏导,即计算&/p&&p&&img src=&http://www.zhihu.com/equation?tex=%5Cfrac%7B%5Cpartial+loss%28t%3DT%29%7D%7B%5Cpartial+V%28t%3D0%29%7D+& alt=&\frac{\partial loss(t=T)}{\partial V(t=0)} & eeimg=&1&&&/p&&p&其中 &img src=&http://www.zhihu.com/equation?tex=loss%28t%3DT%29%3Df_%7Bloss%7D%28y%28t%3DT%29%29& alt=&loss(t=T)=f_{loss}(y(t=T))& eeimg=&1&&&/p&&p&(其中的f_loss(·)为损失函数)&/p&&p&好,稍微一算,发现 &img src=&http://www.zhihu.com/equation?tex=%5Cfrac%7B%5Cpartial+loss%28t%3DT%29%7D%7B%5Cpartial+V%28t%3D0%29%7D%3Df_%7Bloss%7D%27%5Ctimes+y%27%28t%3DT%29+& alt=&\frac{\partial loss(t=T)}{\partial V(t=0)}=f_{loss}'\times y'(t=T) & eeimg=&1&& 中的f_loss'的值就是我们要往前传的梯度(参数更新信息),则我们的目标就是讨论y'(t=T),写全了就是&/p&&p&&img src=&http://www.zhihu.com/equation?tex=%5Cfrac%7B%5Cpartial+y%28t%3DT%29%7D%7B%5Cpartial+V%28t%3D0%29%7D+& alt=&\frac{\partial y(t=T)}{\partial V(t=0)} & eeimg=&1&& 公式【2】&/p&&p&对V求偏导时其他变量(就是说的W和x)自然也就成了常量,这里我们再做一个过分简化,直接删掉 &img src=&http://www.zhihu.com/equation?tex=W%5Ccdot+x%28t-1%29& alt=&W\cdot x(t-1)& eeimg=&1&& 项!(在y二阶乘方存在的情况下忽略一阶乘方),这时就可以直接展开公式【1】:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+y%28T%29+%3Dy%28T-1%29%5E2%5Ccdot+v%28T-1%29+%3Dv%280%29%5E%7B2%5ET-1%7D%5Ccdot+y%280%29%5E%7B2%5E%7BT-2%7D%7D+& alt=& y(T) =y(T-1)^2\cdot v(T-1) =v(0)^{2^T-1}\cdot y(0)^{2^{T-2}} & eeimg=&1&&&/p&&p&对v(0)求导的话,会得到&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+y%27+%3Dy%280%29%5E%7B2%5E%7BT-2%7D%7D%5Ccdot+%282%5ET-1%29%5Ccdot+v%280%29%5E%7B2%5ET-2%7D+& alt=& y' =y(0)^{2^{T-2}}\cdot (2^T-1)\cdot v(0)^{2^T-2} & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=%3Da%5Ccdot+v%280%29%5E%7B2%5ET-2%7D& alt=&=a\cdot v(0)^{2^T-2}& eeimg=&1&&&/p&&p&如果说RNN的 &img src=&http://www.zhihu.com/equation?tex=v%5ET& alt=&v^T& eeimg=&1&& 是音速级的梯度爆炸和消失,那这 &img src=&http://www.zhihu.com/equation?tex=v%5E%7B2%5ET-2%7D& alt=&v^{2^T-2}& eeimg=&1&& 简直是光速级爆炸和消失了呐!~&/p&&p&&b&所以说直接将新信息乘进长时记忆单元只会让情况更糟糕&/b&,导致当初c(t)=c(t-1)让导数恒为1的构想完全失效,&b&这也说明了乘性更新并不是简单的信息叠加,而是控制和scaling。&/b&&/p&&blockquote&&b&感谢评论区&/b& &a class=&member_mention& href=&http://www.zhihu.com/people/fbc2a45632b9dffad4e9ef& data-hash=&fbc2a45632b9dffad4e9ef& data-hovercard=&p$b$fbc2a45632b9dffad4e9ef&&@承翊&/a& 改进此处表述&/blockquote&&p&&b&论加法:&/b&&/p&&p&如果改成加性规则呢?此时添加信息的数学模型为&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+c%28t%29%3Dc%28t-1%29%2B%5Chat+c%28t%29+& alt=& c(t)=c(t-1)+\hat c(t) & eeimg=&1&&&/p&&p&与前面的做法一样,假设线性激活并代入网络模型后得到&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+y%28T%29+%3Dy%28T-1%29%2B%5Chat+c%28T%29& alt=& y(T) =y(T-1)+\hat c(T)& eeimg=&1&&&/p&&p&&img src=&http://www.zhihu.com/equation?tex=%3Dy%28T-1%29%2Bx%5Ccdot+w%2B+v%28T-1%29%5Ccdot+y%28T-1%29& alt=&=y(T-1)+x\cdot w+ v(T-1)\cdot y(T-1)& eeimg=&1&&&/p&&p&&img src=&http://www.zhihu.com/equation?tex=%3D%28v%280%29%2B1%29%5ET%5Ccdot+y%280%29%2BT%5Ccdot+x%5Ccdot+w& alt=&=(v(0)+1)^T\cdot y(0)+T\cdot x\cdot w& eeimg=&1&&&/p&&p&噫?也有指数项~不过由于v加了一个偏置1,导致爆炸的可能性远远大于消失。不过通过做梯度截断,也能很大程度的缓解梯度爆炸的影响。&/p&&p&嗯~梯度消失的概率小了很多,梯度爆炸也能勉强缓解,看起来比RNN靠谱多了,毕竟控制好爆炸的前提下,梯度消失的越慢,记忆的距离就越长嘛。&/p&&p&因此,在往长时记忆单元添加信息方面,加性规则要显著优于乘性规则。&b&也证明了加法更适合做信息叠加,而乘法更适合做控制和scaling。&/b&&/p&&p&由此,我们就确定应用加性规则啦,至此我们设计的网络应该是这样子的:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=c%28t%29%3Dc%28t-1%29%2B%5Chat+c%28t%29+& alt=&c(t)=c(t-1)+\hat c(t) & eeimg=&1&& 公式【3.1】&/p&&p&&img src=&http://www.zhihu.com/equation?tex=%5Chat+c%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=&\hat c(t) = f(W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&& 公式【3.2】&/p&&p&&img src=&http://www.zhihu.com/equation?tex=y%28t%29%3Df%28c%28t%29%29+& alt=&y(t)=f(c(t)) & eeimg=&1&& 公式【3.3】&/p&&p&那么有没有办法&b&让信息装箱和运输同时存在的情况下,让梯度消失的可能性变的更低,让梯度爆炸的可能性和程度也更低呢?&/b&&/p&&p&你想呀,我们往长时记忆单元添加新信息的频率肯定是很低的,现实生活中只有很少的时刻我们可以记很久,大部分时刻的信息没过几天就忘了。因此现在这种模型一股脑的试图永远记住每个时刻的信息的做法肯定是不合理的,&b&我们应该只记忆该记的信息。&/b&&/p&&p&显然,对新信息选择记或者不记是一个控制操作,应该使用乘性规则。因此在新信息前加一个控制阀门,只需要让公式【3.1】变为&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+c%28t%29%3Dc%28t-1%29%2Bg_%7Bin%7D%5Ccdot+%5Chat+c%28t%29+& alt=& c(t)=c(t-1)+g_{in}\cdot \hat c(t) & eeimg=&1&&&/p&&p&这个g_in我们就叫做&b&“输入门”&/b&啦,取值0.0~1.0。&/p&&p&为了实现这个取值范围,我们很容易想到使用&b&sigmoid函数&/b&作为输入门的激活函数,毕竟sigmoid的输出范围一定是在0.0到1.0之间嘛。因此以输入门为代表的控制门的激活函数均为sigmoid,因此控制门:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+g_x+%3D+sigmoid%28...%29+& alt=& g_x = sigmoid(...) & eeimg=&1&&&/p&&p&当然,这是对一个长时记忆单元的控制。我们到时候肯定要设置很多记忆单元的,要不然脑容量也太低啦。因此每个长时记忆单元都有它专属的输入门,在数学上我们不妨使用 &img src=&http://www.zhihu.com/equation?tex=%5Cotimes& alt=&\otimes& eeimg=&1&& 来表示这个按位相乘的操作,用大写字母C来表示长时记忆单元集合。即:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=C%28t%29%3DC%28t-1%29%2Bg_%7Bin%7D%5Cotimes+%5Chat+C%28t%29+& alt=&C(t)=C(t-1)+g_{in}\otimes \hat C(t) & eeimg=&1&& 公式【4】&/p&&p&嗯~由于输入门只会在必要的时候开启,因此大部分情况下公式【4】可以看成C(t)=C(t-1),也就是我们最理想的状态。由此加性操作带来的梯度爆炸也大大减轻啦,梯度消失更更更轻了。&/p&&h2&三、频繁装填带来的问题&/h2&&p&等等,爱思考的同学可能会注意到一个问题。万一神经网络读到一段信息量很大的文本,以致于这时&b&输入门欣喜若狂,一直保持大开状态,狼吞虎咽的试图记住所有这些信息,会发生什么呢?&/b&&/p&&p&显然就会导致c的值变的非常大!&/p&&p&要知道,我们的网络要输出的时候是要把c激活的(参考公式【0.3】),当c变的很大时,sigmoid、tanh这些常见的激活函数的输出就完全饱和了!比如如图tanh:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-d815aa55d11a7aced5c721_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1275& data-rawheight=&829& class=&origin_image zh-lightbox-thumb& width=&1275& data-original=&https://pic2.zhimg.com/v2-d815aa55d11a7aced5c721_r.jpg&&&/figure&&p&当c很大时,tanh趋近于1,这时c变得再大也没有什么意义了,因为饱和了!脑子记不住这么多东西!&/p&&p&这种情况怎么办呢?显然relu函数这种正向无饱和的激活函数是一种选择,但是我们总不能将这个网络输出的激活函数限定为relu吧?那也设计的太失败啦!&/p&&p&那怎么办呢?&/p&&p&其实想想我们自己的工作原理就知道啦。我们之所以既可以记住小时候的事情,也可以记住一年前的事情,也没有觉得脑子不够用,不就是因为我们。。。&b&爱忘事嘛&/b&。所以还需要加一个门用来忘事!这个门就叫做&b&“遗忘门”&/b&吧。&b&这样每个时刻到来的时候,记忆要先通过遗忘门忘掉一些事情再考虑要不要接受这个时刻的新信息。&/b&&/p&&p&显然,遗忘门是用来控制记忆消失程度的,因此也要用乘性运算,即我们设计的网络已进化成:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+c%28t%29%3Dg_%7Bforget%7Dc%28t-1%29%2Bg_%7Bin%7D%5Ccdot+%5Chat+c%28t%29+& alt=& c(t)=g_{forget}c(t-1)+g_{in}\cdot \hat c(t) & eeimg=&1&&&/p&&p&或者向量形式的:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=C%28t%29%3Dg_%7Bforget%7DC%28t-1%29%2Bg_%7Bin%7D%5Cotimes+%5Chat+C%28t%29+& alt=&C(t)=g_{forget}C(t-1)+g_{in}\otimes \hat C(t) & eeimg=&1&&&/p&&p&好啦~解决了如何为我们的长时记忆单元可控的添加新信息的问题,又贴心的考虑到并优雅解决了信息输入太过丰富导致输入控制门“合不拢嘴”的尴尬情况,那么是时候考虑我们的长时记忆单元如何输出啦~&/p&&h2&四、网络如何输出&/h2&&p&有人说,输出有什么好考虑的,&b&当前的输出难道不就仅仅是激活当前的记忆吗?&/b&难道不就是最前面说的y(t)=f(c(t))?(其中f(·)为激活函数)&/p&&p&试想,假如人有1万个长时记忆的脑细胞,每个脑细胞记一件事情,那么我们在处理眼前的事情的时候是每个时刻都把这1万个脑细胞里的事情都回忆一遍吗?显然不是呀,&b&我们只会让其中一部分跟当前任务当前时刻相关的脑细胞输出&/b&,即应该给我们的长时记忆单元添加一个输出阀门!也就是说应该输出:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=y%28t%29%3Dg_%7Bout%7D+%5Ccdot+f%28c%28t%29%29+& alt=&y(t)=g_{out} \cdot f(c(t)) & eeimg=&1&&&/p&&p&嗯~终于看起来好像没有什么问题了。&/p&&h2&五、控制门受什么控制&/h2&&p&那么我们最后再&b&定义一下控制门们(输入门、遗忘门、输出门)受谁的控制就可以啦。&/b&&/p&&p&这个问题也很显然,当然就是让各个门受当前时刻的外部输入x(t)和上一时刻的输出y(t-1)啦,即 &img src=&http://www.zhihu.com/equation?tex=g_x%28t%29%3Df%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29& alt=&g_x(t)=f(W\cdot x(t)+V\cdot y(t-1))& eeimg=&1&& 。。。。。。?&/p&&p&好像这样的思维在RNN中并不会有什么问题,但!是!不要忘了在我们这个新设计的网络中,多了一堆阀门!尤其注意到输出门,&b&一旦输出门关闭,就会导致其控制的记忆f(c(t))被截断,下一时刻各个门就仅仅受当前时刻的外部输入x(t)控制了&/b&!这显然不符合我们的设计初衷(尽可能的让决策考虑到尽可能久的历史信息)。怎么办呢?&/p&&p&最简单的做法就是再把长时记忆单元接入各个门,即把上一时刻的长时记忆c(t-1)接入遗忘门和输入门,把当前时刻的长时记忆c(t)接入输出门(当信息流动到输出门的时候,当前时刻的长时记忆已经被计算完成了)。即&/p&&p&&img src=&http://www.zhihu.com/equation?tex=g_%7Bin%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t-1%29%29+& alt=&g_{in}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=g_%7Bforget%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t-1%29%29+& alt=&g_{forget}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=+g_%7Bout%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t%29%29+& alt=& g_{out}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t)) & eeimg=&1&&&/p&&p&当然,这个让各个门考虑长时记忆的做法是后人打的补丁,这些从长时记忆单元到门单元的连接被称为&b&&peephole(猫眼)&&/b&。&/p&&h2&六、Simple版本设计完成&/h2&&p&至此还有什么问题吗?看起来真没有问题啦~我们设计的&b&simple版&/b&的网络就完成啦,总结一下,即:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=+C%28t%29%3Dg_%7Bforget%7DC%28t-1%29%2Bg_%7Bin%7D%5Cotimes+%5Chat+C%28t%29+& alt=& C(t)=g_{forget}C(t-1)+g_{in}\otimes \hat C(t) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=%5Chat+c%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%29+& alt=&\hat c(t) = f(W\cdot x(t)+V\cdot y(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=y%28t%29%3Dg_%7Bout%7D+%5Cotimes+f%28C%28t%29%29+& alt=&y(t)=g_{out} \otimes f(C(t)) & eeimg=&1&&&/p&&p&&img src=&http://www.zhihu.com/equation?tex=g_%7Bin%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t-1%29%29+& alt=&g_{in}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=g_%7Bforget%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+c%28t-1%29%29+& alt=&g_{forget}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot c(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=g_%7Bout%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+y%28t-1%29%2BU%5Ccdot+C%28t%29%29+& alt=&g_{out}(t) = sigm(W\cdot x(t)+V\cdot y(t-1)+U\cdot C(t)) & eeimg=&1&&&/p&&p&就起名叫&b&“门限simple RNN”&/b&吧!(非学术界认可)&/p&&h2&七、向Standard版本演进&/h2&&p&然而,作为伟大的设计者,怎么能止步于simple呢!&b&我们要像simple RNN推广出standardRNN的做法那样,推广出我们的standard版本!即加入隐藏层!&/b&&/p&&p&为什么要加隐藏层已经在本文开头提到了,这也是simpleRNN到standardRNN的核心区别,这也是RNN及其变种可以作为深度学习的主角之一的原因。模仿RNN的做法,我们直接用隐藏层单元h来代替最终输出y:&/p&&p&&img src=&http://www.zhihu.com/equation?tex=C%28t%29%3Dg_%7Bforget%7D%5Cotimes+C%28t-1%29%2Bg_%7Bin%7D%5Cotimes+%5Chat+C%28t%29+& alt=&C(t)=g_{forget}\otimes C(t-1)+g_{in}\otimes \hat C(t) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=%5Chat+C%28t%29+%3D+f%28W%5Ccdot+x%28t%29%2BV%5Ccdot+h%28t-1%29%29+& alt=&\hat C(t) = f(W\cdot x(t)+V\cdot h(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=h%28t%29%3Dg_%7Bout%7D+%5Cotimes+f%28C%28t%29%29+& alt=&h(t)=g_{out} \otimes f(C(t)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=y%28t%29%3Dh%28t%29& alt=&y(t)=h(t)& eeimg=&1&&&/p&&p&&img src=&http://www.zhihu.com/equation?tex=g_%7Bin%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+h%28t-1%29%2BU%5Ccdot+C%28t-1%29%29+& alt=&g_{in}(t) = sigm(W\cdot x(t)+V\cdot h(t-1)+U\cdot C(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=g_%7Bforget%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+h%28t-1%29%2BU%5Ccdot+C%28t-1%29%29+& alt=&g_{forget}(t) = sigm(W\cdot x(t)+V\cdot h(t-1)+U\cdot C(t-1)) & eeimg=&1&&&img src=&http://www.zhihu.com/equation?tex=g_%7Bout%7D%28t%29+%3D+sigm%28W%5Ccdot+x%28t%29%2BV%5Ccdot+h%28t-1%29%2BU%5Ccdot+C%28t%29%29+& alt=&g_{out}(t) = sigm(W\cdot x(t)+V\cdot h(t-1)+U\cdot C(t)) & eeimg=&1&&&/p&&blockquote&&b&感谢评论区&/b& &a class=&member_mention& href=&http://www.zhihu.com/people/fbc2a45632b9dffad4e9ef& data-hash=&fbc2a45632b9dffad4e9ef& data-hovercard=&p$b$fbc2a45632b9dffad4e9ef&&@承翊&/a&
修正公式中的符号错误&/blockquote&&p&显然,由于h随时都可以被输出门截断,所以我们可以很感性的把h理解为短时记忆单元。&/p&&p&而从数学上看的话,更是短时记忆了,因为梯度流经h的时候,经历的是h(t)-&c(t)-&h(t-1)的连环相乘的路径(在输入输出门关闭前),显然如前边的数学证明中所述,这样会发生梯度爆炸和消失,而梯度消失的时候就意味着记忆消失了,即h为短时记忆单元。&/p&&p&同样的思路可以再证明一下,由于梯度只从c走的时候,存在一条无连环相乘的路径,可以避免梯度消失。又有遗忘门避免激活函数和梯度饱和,因此c为长时记忆单元。&/p&&p&好啦,我们standard版本的新型网络也完成了!有没有觉得信息量超级大,又乱掉了呢?不要急,贴心的小夕就再带你总结一下我们这个网络前馈的过程:&/p&&p&新时刻t刚刚到来的时候,&/p&&p&1、首先长时记忆单元c(t-1)通过遗忘门g_forget去遗忘一些信息。&br&2、其中g_forget受当前时刻的外部输入x(t)、上一时刻的输出(短时记忆)h(t-1)、上一时刻的长时记忆c(t-1)的控制。&br&3、然后由当前时刻外部输入x(t)和上一时刻的短时记忆h(t-1)计算出当前时刻的新信息 &img src=&http://www.zhihu.com/equation?tex=%5Chat+c%28t%29& alt=&\hat c(t)& eeimg=&1&& 。&br&4、然后由输入门g_in控制,将当前时刻的&b&部分&/b&新信息 &img src=&http://www.zhihu.com/equation?tex=%5Chat+c%28t%29& alt=&\hat c(t)& eeimg=&1&& 写入长时记忆单元,产生新的长时记忆c(t)。&br&5、其中g_in受x(t)、h(t-1)、c(t-1)的控制。&br&6、激活长时记忆单元c(t),准备上天(输出)。&br&7、然后由输出门g_out把控,将至目前积累下来的记忆c(t)选出部分相关的记忆生成这一时刻我们关注的记忆h(t),再把这部分记忆进行输出y(t)。&br&8、其中输出门g_out受x(t)、h(t-1)和当前时刻的长时记忆c(t)的控制。&/p&&p&宏观上看就是:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-2d54d5fcd02ec4552bbb_b.jpg& data-size=&normal& data-rawwidth=&865& data-rawheight=&336& class=&origin_image zh-lightbox-thumb& width=&865& data-original=&https://pic4.zhimg.com/v2-2d54d5fcd02ec4552bbb_r.jpg&&&figcaption&此图没有加入peephole连接&/figcaption&&/figure&&p&前馈的过程写完了,梯度反传的过程就让深度学习平台去自动求导来完成吧~有M倾向的同学可以尝试对上述过程进行手动求导。&/p&&h2&八、起个名字&/h2&&p&好啦,最后对全文的设计过程总结一下:&/p&&p&1、我们为了解决RNN中的梯度消失的问题,为了让梯度无损传播,想到了c(t)=c(t-1)这个朴素却没毛病的梯度传播模型,我们于是称c为“长时记忆单元”。&/p&&p&2、然后为了把新信息平稳安全可靠的&b&装入&/b&长时记忆单元,我们引入了“输入门”。&/p&&p&3、然后为了解决新信息装载次数过多带来的&b&激活函数饱和&/b&的问题,引入了“遗忘门”。&/p&&p&4、然后为了让网络能够&b&选择合适的记忆进行输出&/b&,我们引入了“输出门”。&/p&&p&5、然后为了解决记忆被&b&输出门截断&/b&后使得各个门单元&b&受控性降低&/b&的问题,我们引入了“peephole”连接。&/p&&p&6、然后为了将神经网络的简单反馈结构升级成&b&模糊历史记忆&/b&的结构,引入了隐单元h,并且发现h中存储的模糊历史记忆是短时的,于是记h为短时记忆单元。&/p&&p&7、于是该网络既具备长时记忆,又具备短时记忆,就干脆起名叫&b&“长短时记忆神经网络(Long Short Term Memory Neural Networks,简称LSTM)“&/b&啦。&/p&&p&&br&&/p&&p&&b&参考文献:&/b&&/p&&p&1.Hochreiter S, Schmidhuber J. Long Short-TermMemory[J]. Neural Computation,&br&): .&br&2. Gers F A, Schmidhuber J, Cummins F, et al.Learning to Forget: Continual Prediction with&br&LSTM[J]. Neural Computation,): &a href=&tel:&&&/a&.&br&3. Gers F A,Schraudolph N N, Schmidhuber J, etal. Learning precise timing with lstm&br&recurrent networks[J]. Journal of MachineLearning Research, ):&br&115-143.&br&4. A guide to recurrent neural networks and backpropagation. Mikael Bod ?en.&br&5. &a href=&http://link.zhihu.com/?target=http%3A//colah.github.io/posts/2015-08-Understanding-LSTMs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&colah.github.io/posts/2&/span&&span class=&invisible&&015-08-Understanding-LSTMs/&/span&&span class=&ellipsis&&&/span&&/a&&br&6. 《Supervised Sequence Labelling with Recurrent Neural Networks》Alex Graves&br&7. 《Hands on machine learning with sklearn and tf》Aurelien Geron&br&8. 《Deep learning》Goodfellow et.&/p&
Ps:喂喂喂,你萌不要光收藏不点赞呀_(:з」∠)_emmmm...搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗?想知道simple RNN是如何一步步的走向了LSTM吗?觉得LSTM的工作机制看不透?恭喜你打开了正确的文章!零、前置知识1:在上一篇文章
&p&可以放106个, 你可能会觉得, 一个框只能放一个怎么突破100个呢?&/p&&p&试着突破定势思维.&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-33ebec68c048cfccbdba42_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&362& data-rawheight=&366& data-default-watermark-src=&https://pic2.zhimg.com/50/v2-7b4c8becb916_b.jpg& class=&content_image& width=&362&&&/figure&&p&想想一个硬币最多可以和几个硬币相邻?&/p&&p&六个, 如果一个格子占一个才几个? &/p&&p&四个, 所以有大量的空间被浪费了.&/p&&figure&&img src=&https://pic3.zhimg.com/50/v2-cdd62f89ff6fffdcdb896_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&374& data-rawheight=&367& data-default-watermark-src=&https://pic4.zhimg.com/50/v2-e7632eaba802d2becf6bf_b.jpg& class=&content_image& width=&374&&&/figure&&p&这样, 就一共有105个了.&/p&&p&然后聪明的你发现还有点空隙, 能不能利用起来呢?&/p&&p&当然是可以的&/p&&figure&&img src=&https://pic1.zhimg.com/50/v2-6a859e26d6c5b6877db32baa0deeadbe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&362& data-rawheight=&364& data-default-watermark-src=&https://pic4.zhimg.com/50/v2-8a1f99ed0e28c5d9f1d8_b.jpg& class=&content_image& width=&362&&&/figure&&p&这样安排就又多了个10排的, 神奇的又插了一个进去.&/p&&p&那么, 还能不能再用什么神奇的方法再搞一个进去呢?&/p&&p&不可能了...&/p&&hr&&p&但是如何在数学上证明不能放下107个圆呢? 有两种思路&/p&&ul&&li&1.把正方形看做一个框, 把圆看成光滑的小球, 然后你取一个球, 使劲压, 看看能不能压进去.&/li&&/ul&&p&当然现实中是没有绝对光滑小球的, 你实际没法做这个实验. &/p&&p&但数学上可以定义小球与小球, 小球与方框之间的势能, 然后用各种算法降低势能, 看看最小值能不能降到零即可.&/p&&ul&&li&2.取n个小球, 然后放进一个方框, 方框使劲收缩, 收缩到无法再收缩为止.&/li&&/ul&&p&最终结果就是最优平面圆堆积.这种方法比上一种要复杂一些&/p&&p&但是数学家一般喜欢研究第二个, 因为至少对于正方形等圆嵌入来说, 解决了第二个也就解决了第一个.对于矩形才会用第一种方法.&/p&&p&但这个思路说得轻巧, 可数学上怎么定义使劲收缩呢?&/p&&p&&b&Talk is cheap, Show me the code!&/b&&/p&&figure&&img src=&https://pic2.zhimg.com/50/v2-352e69d6cee95079b62d_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&597& data-rawheight=&795& data-default-watermark-src=&https://pic2.zhimg.com/50/v2-3ef298ebddbefdc30fd90d80_b.jpg& class=&origin_image zh-lightbox-thumb& width=&597& data-original=&https://pic2.zhimg.com/50/v2-352e69d6cee95079b62d_r.jpg&&&/figure&&p&&a href=&//link.zhihu.com/?target=https%3A//bura.brunel.ac.uk/bitstream//FulltextThesis.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Formulation Space Search for two-dimensional Packing Problems&/a&&/p&&p&这本书整理了这方面的研究成果, 第72页讨论了圆塞入正方形, 后面还有更难的不相等图形塞进不规则边框&/p&&p&书中没给结果, 算法都是伪代码, 不用完全看懂公式也能复现.&/p&&p&运算时间要有心理准备, 一次差不多要跑半个小时.&/p&&p&&b&计算结果表明106个直径为1的圆能放进边长9.825的正方形&/b&&/p&&p&&b&但是如果要放置107个直径为1的圆就要边长10.19的正方形&/b&&/p&&p&所以确实10*10的正方形只能塞下106个直径为1的圆.&/p&&figure&&img src=&https://pic4.zhimg.com/50/v2-faf8dd9b95ac7ffb9b0d93_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&428& data-rawheight=&396& data-default-watermark-src=&https://pic1.zhimg.com/50/v2-cc375db0eec847c18298c4_b.jpg& class=&origin_image zh-lightbox-thumb& width=&428& data-original=&https://pic4.zhimg.com/50/v2-faf8dd9b95ac7ffb9b0d93_r.jpg&&&/figure&&p&注意有轻微的形变,
比如右下那个没对齐, 上边框第五个圆脱离了边框, 但是只有0.4%, 整体上和原来差不多.&/p&&p&附全部的绘图代码:&/p&&div class=&highlight&&&pre&&code class=&language-mathematica&&&span class=&n&&t1&/span&&span class=&o&&=&/span&&span class=&n&&Flatten&/span&&span class=&p&&[&/span&&span class=&n&&Table&/span&&span class=&p&&[{&/span&&span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&},{&/span&&span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&19&/span&&span class=&p&&,&/span&&span class=&mi&&2&/span&&span class=&p&&},{&/span&&span class=&n&&j&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&19&/span&&span class=&p&&,&/span&&span class=&mi&&2&/span&&span class=&p&&}],&/span&&span class=&mi&&1&/span&&span class=&p&&];&/span&&span class=&w&&&/span&
&span class=&n&&Append&/span&&span class=&p&&[&/span&&span class=&n&&Circle&/span&&span class=&o&&/@&/span&&span class=&n&&t1&/span&&span class=&p&&,&/span&&span class=&w&&&/span&
&span class=&w&& &/span&&span class=&p&&{&/span&&span class=&n&&EdgeForm&/span&&span class=&p&&[&/span&&span class=&n&&Dashed&/span&&span class=&p&&],&/span&&span class=&n&&RGBColor&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&],&/span&&span class=&n&&Rectangle&/span&&span class=&p&&[{&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&},{&/span&&span class=&mi&&20&/span&&span class=&p&&,&/span&&span class=&mi&&20&/span&&span class=&p&&}]}&/span&&span class=&w&&&/span&
&span class=&p&&]&/span&&span class=&o&&//&/span&&span class=&n&&Graphics&/span&&span class=&w&&&/span&
&span class=&n&&f10&/span&&span class=&o&&=&/span&&span class=&n&&Circle&/span&&span class=&o&&/@&/span&&span class=&n&&Table&/span&&span class=&p&&[{&/span&&span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&nv&&#&/span&&span class=&p&&},{&/span&&span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span&&span class=&mi&&19&/span&&span class=&p&&,&/span&&span class=&mi&&2&/span&&span class=&p&&}]&/span&&span class=&o&&&&/span&&span class=&p&&;&/span&&span class=&w&&&/span&
&span class=&n&&f9&/span&&span class=&o&&=&/span&&span class=&n&&Circle&/span&&span class=&o&&/@&/span&&span class=&n&&Table&/span&&span class=&p&&[{&/span&&span class=&n&&i&/span&&span class=&p&&,&/s

我要回帖

更多关于 人脑熵值0.86说明什么 的文章

 

随机推荐