中國全面禁野生動物交易

摘錄自2020年1月27日自由時報中國報導

中國國家市場監督管理總局、農業農村部和國家林業和草原局26日發布聯合公告,針對中國各地飼養野生動物場所、農(集)貿易市場、超市、餐飲店、電商平台等場所,即日起暫時「嚴禁野生動物對外擴散與轉運販賣及任何形式的交易活動」,直到「二○一九新型冠狀病毒」(2019-nCoV)肺炎(簡稱武漢肺炎)的全國疫情解除。地方當局也將加強檢查,加以停業整頓、查封,將犯嫌移送公安機關。

中國科學院武漢病毒研究所與若干頂尖大學的十九位知名研究人員,早已呼籲中國政府取締被視為疫情爆發中心的武漢華南海鮮批發市場之類的野生動物市場,但鑽法律漏洞的野生動物非法交易仍盛行,增加疫情爆發的可能性。《華盛頓郵報》指出,中國未能從十七年前爆發的嚴重急性呼吸道症候群(SARS)學到教訓,即野生動物交易市場是動物傳人疾病的一大溫床。

 

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

從演奏家的新年大膽願望 一窺日本都市蜂害問題

文:宋瑞文

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

巴西東南部暴雨成災 總統視察下令撥款救援

摘錄自2020年1月31日中央社報導

巴西東南部米納斯吉拉斯、聖埃斯皮里圖和里約熱內盧三州本月遭暴雨侵襲,巴西總統波索納洛今(30日)視察受災最嚴重的城市之一好景市,宣布聯邦政府將撥款巴西幣9億元賑災。

1889年建城的好景市層獲聯合國評為「環境模範市」,同時被譽為「花園城」,1980年代市內綠地範圍和居民人口比例一度高達32平方公尺比1,但現在卻到處都是不透水的柏油路面,暴雨襲擊不僅引發嚴重淹水,道路更慘遭摧毀,出現坑洞、隆起現象。

聖保羅大學(USP)氣象學家安布里茲(Tercio Ambrizzi)指出,今年夏天南大西洋海水變暖,使得南極上來的冷氣團在巴西東南部停留更長時間,加上熱帶低壓帶來強烈雨勢,特別是米納斯吉拉斯、聖埃斯皮里圖和里約熱內盧三州持續多雨,土壤和岩層沒有足夠時間吸收水分,也容易引發土石流。

24日迄今,包括好景市在內,米納斯吉拉斯州已有101個城市處於緊急狀態,另外五個城市宣布進入公共災難狀態,超過5萬人流離失所,55人死亡。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

巧克力與雨林共生 亞馬遜部落重返「可可之地」 靠它驅逐非法淘金

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

原來JS是這樣的 – 原型鏈

提到屬性描述符 [[Get]][[Put]] 以及提到了訪問描述符 [[Prototype]],看它們的特性就會很容易的讓人想到經典的面向對象風格體系中對類操作要做的事情,但帶一些 introspector 的味道。回想到之前所寫來自用的辣雞應用中所附帶了一個簡易的類似 jQuery 的簡易常用功能實現,就用到了簡單的 [[Prototype]] 特性。但我們前幾篇都沒有詳細的提及 js 的原型鏈相關的內容,本篇就將討論 js 的 [[Prototype]] 屬性和相關的內容。

注:ES6 的 Proxy 和 class 的概念不在本篇討論範圍內。

[[Prototype]]

JavaScript 中的特殊對象屬性除了 [[Get]][[Put]] 外,還有一個很重要的特殊內置屬性就是 [[Prototype]] 了。

[[Prototype]] 是一個幾乎所有對象在創建時都會被賦予一個非空值的屬性,還記得在之前提到 new 操作符的行為嗎?其中的行為之一就是把其 [[Prototype]] 關聯指向到對應的內置對象上。通常 [[Prototype]] 所指向的即為創建此對象時所使用的對象了。

來看下面一個例子

var macat = { a: 1 };

var codingcat = macat; // 和 macat 指向的內容相同
codingcat.b = 2;
console.log(macat.b); // 2

var pineapple = Object.create( macat ); // 新對象,但其 [[Prototype]] 鏈向 macat
pineapple.c = 3; // 新對象的屬性
console.log(macat.c); // undefined
codingcat.d = 4;
console.log(pineapple.d) // 4;

上例中, 變量 codingcat 顯然是指向和 macat 相同的內容,實質完全一致,而 pineapple 則是通過 創建的變量。顯然 pineapplemacat 是不同的兩個對象。不過我們會發現我們依然可以通過 pineapple.d 訪問 macat.d 的值,這就是因為在 Object.create() 中,會把 pineapple[[Prototype]] 指向我們的原型對象 macat 了。

[[Prototype]] 引用的作用是什麼呢?看上去這是一個確定這種像 fallback 一樣的取值操作應該 fallback 到誰的屬性標記,而準確的說,這種 pineapple.d 形式的屬性引用會觸發 [[Get]] 操作(上篇的內容),而默認的 [[Get]] 則會在對象本身沒有此屬性時會去查找 [[Prototype]] 引用的變量了。這樣的引用成為了鏈狀,故被稱作原型鏈。

當然,這個行為其實我們已經“用過”很多次了,比如 .toString().valueOf()hasOwnProperty(),我們 Object.create() 等形式構建的新對象顯然並沒有附帶一份這些函數的副本,而是因為普通的 [[Prototype]] 鏈最終都會指向內置的 Object.prototype,而它提供了這些功能。

屬性設置和屏蔽

不過上例中有個有趣的坑,我們考慮在上例的基礎上做如下操作:

...
pineapple.a++; // 交互式終端會輸出 1
console.log(pineapple.a); // 2
console.log(macat.a); // 1

pineapple.a++ 看上去是進行了變量自增的操作,但這一行后,我們發現 pineapple.a 不再等於 macat.a 了,這是因為實際上 pineapple.a 本來並不存在,但可以通過原型鏈找到 macat.a,而 pineapple.a++ (相當於 pineapple.a = pineapple.a + 1)最終進行的賦值操作創建了 pineapple.a ,故最終這兩個變量的值自然不再相等。

這個例子來看,如果本身即通過對 pineapple 的屬性(a)進行訪問操作,那麼不同情況下訪問得到的結果可能是不同的甚至是出人意料的。無意中創建的屬性“阻止”了原型鏈上查找這個屬性的行為,我們稱之為屬性屏蔽

屬性屏蔽根據變量本身情況的不同會有很多不同的狀態表現,例如原型鏈上層變量的數據訪問屬性標記為只讀的情況,(如果不是嚴格模式下)嘗試進行的賦值操作會被忽略等。

類 (迫真)

我們早已知道 JavaScript 中不存在“類”的概念,而為了能夠“寫着爽”,很多開發者都在想盡辦法在 JavaScript 中模仿其它 OO 語言中“類”的行為。其中很常見的做法類似下面這樣:

function Person(name) {
    console.log("I'm " + name + "!");
    this.name = name;
}

Person.prototype.getName = function() {
    return this.name;
}

var chris = new Person("Chris"); // I'm Chris
var sophie = new Person("Sophie"); // I'm Sophie
chris.getName(); // "Chris"

看上去我們的 Person 像極了一個包含 name 成員變量和 getName() 方法的類,並且在其“構造函數”中會輸出 “I’m xxx”。不過在之前的文章中我們已經講過了,並不存在所謂的構造函數,new 只是把 Person() 函數作為構造對象所需調用的函數進行了一次調用而已。不過你可能還會比較奇怪為什麼 .getName() 是可以使用的,既然我們在原型鏈這一章提起這件事,顯然是因為原型鏈,於是回顧之前第二章我們含糊提到的一句話是(之一是)“對這個新對象執行 [[Prototype]] 鏈接”,實際上,這裏我們被 new 出來的對象的 [[Prototype]] 被關聯到了 Person.prototype 上,於是當我們嘗試進行屬性訪問的時候,自然就可以訪問到 Person.prototype.getName() 上了。

不過這個過程還是可能會引起一些蛋疼的誤會,比如假設我們在上面例子的基礎上:

...
sophie.constructor === Person; // true
sophie.constructor === Person.prototype.constructor; // true
Person.prototype = {};
var koishi = new Person("Koishi");  // I'm Koishi
koishi.constructor === Person; // false
koishi.constructor === Object; // true
sophie.constructor === Person; // true
sophie.constructor === Person.prototype.constructor; // false

由於“構造函數”這種表現形式的理解,我們有時候會認為 變量名.constructor 實際就總是構造調用時指向的函數,甚至 sophie.constructor === Person 返回也是 true ,但實際並不是這樣,這裏返回為真,僅僅是因為 Person.prototype.constructor 默認指向的就是 Person 罷了。於是我們嘗試替換 Person.prototype 之後創建了變量 koishi,再檢查 koishi.constructor === Person 就不再為真了,在原型鏈的查找過程最終找到了 Object.prototype,然後 Object.prototype.constructor 其實指向了 Object

不過,後面我們接着嘗試檢查了 sophie.constructor 卻發現似乎它並未受到影響,這個就不要往原型鏈方面想了,這裏的原因僅僅是 sophie 的原型鏈指向的是曾經 Person.prototype 所指向的東西上,而我們 Person.prototype = {} 的操作只是讓 Person.prototype 指向了新的東西,舊的東西並沒有改變,所以 sophie 自然看上去“沒有受到影響”了。當然,koishi 這個變量被構造時所被調用的函數仍然是 Person(),這和 koishi.constructor 或者 Person.prototype.constructor 的指向沒有什麼關係。

對象實例關係

當然我們還有一點需要重新強調的是,[[Prototype]].prototype 不是一回事,[[Prototype]] 是描述對象實例關係的屬性描述符,而 .prototype 只是 Function 對象的一個屬性而已。new 操作符會把新建的對象的 [[Prototype]] 指向原對象的 .prototype 屬性上,僅此而已。

既然 [[Prototype]] 實際描述了對象之間的實例關係,那麼我們自然就可以想到 instanceof 的實際作用了,其所做的事情就是告訴你在 a instanceof Foo 中, a 的整個原型鏈中是否有指向 Foo.prototype 的對象。

絕大多數瀏覽器支持一個 .__proto__ 屬性(實際位於 Object.__proto__)指向了 [[Prototype]] ,這對於我們調試時希望直接訪問內部的 [[Prototype]] 提供了便利,不過它並不是標準,所以除了調試便利之外還是不要使用它比較好。

最後

於是關於原型鏈相關的簡單討論就到此結束了。和上篇一樣,如果你對這些內容仍然感興趣,不妨去讀一讀《You don’t know JS – this & object prototypes》一書。這是一本開源書,你可以在這裡在線閱讀這本書,或者購買這本書的电子版或實體版。這本書的中文譯本涵蓋在《你所不知道的 JavaScript 上卷》中,你也可以考慮看中文版。

由於近期工作過於繁忙的精力佔用緣故,“原來JS是這樣的”系列可能就暫時告一段落了。最後,儘管我會盡可能仔細的檢查文章內容是否有問題,但也不保證這篇文章中一定不會有錯誤,如果您發現文章哪裡有問題,請在下面留言指正,或通過任何你找得到的方式聯繫我指正。感激不盡~

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

中介者模式

2019年11月11日08:45:25

中介者模式(mediator pattern)

定義

從前的日色變得慢

車,馬,郵件都慢

一生只夠愛一個人

中介者模式(mediator pattern),用一个中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地互相引用,從而使其耦合鬆散,而且可以獨立地改變它們的交互。————《設計模式:可復用面向對象軟件的基礎》

中介者模式是一種對象行為型模式。

從木心這首小詩中的“郵件”中,討論一下中介者模式。

很久很久以前,你和她住在一個很大很大的村子裏面,你住在村的東邊,她住在村的西邊。

那年你才十八,她也正值青春年華,正月十五元宵節,你賞燈之時,她回首處,你一見鍾情。

往後的日子里,你每天都到她家送情書。送了99天,你想這不是辦法,每天大半天浪費在路上,沒時間賺錢。於是你想了一個辦法,創辦郵局,每天替村東邊的人送信件給村西邊的人,一舉兩得。慢慢郵局越來越大,南邊的人通過郵局來給北邊的人送信件,你找了幾個夥計,從南到北,從北到南送信。

多年後,你富甲一方,也娶了當年的她。

“郵局”就是中介者模式中的中介者,“你”和“她”就是中介者中的同事。

圖示

中介者模式結構圖:

角色

從中介者模式結構圖中可知,有以下4個角色:

  • (1)抽象中介者:定義了中介者
  • (2)具體中介者:實現了抽象中介者的方法,它需要知道所有具體同事對象,並從具體同事對象接收消息,向具體同事對象發出命令。
  • (3)抽象同事類:定義同事類
  • (4)具體同事類:實現抽象同事類,每個具體同事對象只知道自己的行為,而不了解其他同事對象的情況,但它們都認識中介者。

代碼示例

這是一個悲傷的故事,住在村東邊的你通過郵局給村西邊的她表白,她說,她已經有男朋友了。

類圖:

抽象中介者角色:

public interface PostOffice {
    /**
     * 送信
     */
    void deliverLetters(String letters, String receiver);

    /**
     * 添加收信人
     */
    void addPeople(Villager villager);
}

具體中介者角色:

public class PostOfficeImpl implements PostOffice {
    /**
     * 收信人信息
     */
    private HashMap villagerMap = new HashMap<String, Villager>();

    @Override
    public void addPeople(Villager villager) {
        villagerMap.put(villager.getClass().getSimpleName(), villager);
    }

    @Override
    public void deliverLetters(String letters, String receiver) {
        System.out.println("=>收信:郵局收到要寄的信");
        Villager villager = (Villager) villagerMap.get(receiver);
        System.out.println("=>送信:拿出地址本查詢收信人地址是:" + villager.getAddress() + ",送信");
        System.out.println("=>收信人看信:");
        villager.receiveLetter(letters);
    }
}

抽象同事類角色:

public abstract class Villager {
    protected PostOffice postOffice;
    protected String address;

    Villager(PostOffice postOffice, String address) {
        this.postOffice = postOffice;
        this.address = address;
    }

    public void receiveLetter(String letter) {
        System.out.println(letter);
    }

    public void sendLetter(String letter, String receiver) {
        postOffice.deliverLetters(letter, receiver);
    }

    public String getAddress() {
        return address;
    }
}

具體同事類角色:

// 她
public class She extends Villager {

    She(PostOffice postOffice, String address) {
        super(postOffice, address);
    }
}
// 你
public class You extends Villager {
    public You(PostOffice postOffice, String address) {
        super(postOffice, address);
    }
}

中介者模式測試類:

public class MediatorPatternTest {
    public static void main(String[] args) {
        PostOffice postOffice = new PostOfficeImpl();
        She she = new She(postOffice, "村西邊");
        You you = new You(postOffice, "村東邊");

        postOffice.addPeople(she);
        postOffice.addPeople(you);

        you.sendLetter("正月十五,元宵之夜,一見傾心", "She");
        she.sendLetter("對不起,我已經有男朋友了", "You");
    }
}

測試結果:

使用場景

村子很大,人很多,關係很複雜:系統中存在很多對象,對象之間存在複雜的引用關係,產生的相互依賴關係結構混亂且難以理解,使得對象無法重用

人與人之間書信交流:對象間存在某種共性交互行為,用中介者封裝這種行為

在這個很大的村子裏面,每個人要給不同人的送信,這種關係成網狀結構,錯綜複雜。

加入郵局中介者之後,成星狀結構,每個人只和郵局有關係。

總結:系統中存在很多對象,對象間存在複雜的關係,在複雜的關係中存在共性交互行為,封裝共性交互行為就是中介者。

中介者模式很容易在系統中應用,也很容易在系統中無用。當系統出現了“多對多”交互複雜的對象群是,不要急於使用中介者模式,而要先反思你的系統在設計上是不是合理。

實例有:聯合國,聊天室等。

中介者模式與迪米特法則

中介者模式是應用迪米特法則的典型。

迪米特法則:只與你最直接的朋友交流(Only talk to you immediate friends.)參考

優點

  • 解耦:使同事類對象耦合性降低,可以獨立變化和復用同事類
  • 把對象如何協作進行了抽象,將中介作為一個獨立的概念並將其封裝在一個對象中,這樣關注的對象就從對象各自本身的行為轉移到它們之間的交互上來,也就是在一個更宏觀的角度看待系統。

缺點

  • 在具體中介者類中包含了同事之間的交互細節,可能會導致具體中介者類非常複雜,不利於維護,後期可能有牽一發而動全身的危險。

總結

中介者模式,用一个中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地互相引用,從而使其耦合鬆散,而且可以獨立地改變它們的交互。

2019年11月17日16:32:36

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

Convolutional Sequence to Sequence Learning 論文筆記

目錄

簡介

寫這篇博客主要是為了進一步了解如何將CNN當作Encoder結構來使用,同時這篇論文也是必看的論文之一。該論文證明了使用CNN作為特徵抽取結構實現Seq2Seq,可以達到與 RNN 相接近甚至更好的效果,並且CNN的高并行能力能夠大大減少我們的模型訓練時間(本文對原文中不清晰的部分做了梳理,建議與原文搭配服用)

原文鏈接:

模型結構如下圖所示:

下面對模型的每個部分進行分塊介紹:

Position Embeddings

卷積網絡和Transformer一樣,不是類似於RNN的時序模型,因此需要加入位置編碼來體現詞與詞之間的位置關係

  • 樣本輸入的詞向量:\(w = (w_1, w_2, …, w_n)\)
  • 樣本位置編碼:\(p = (p_1, p_2, …, p_n)\)
  • 最終詞向量表徵:\(e = (w_1 + p_1, w_2 + p_2, …, w_n + p_n)\)

GLU or GRU

GLU和GTU是在同一篇論文中提出的,其中,GLU也是CNN Seq2Seq的主要結構。可以直接將其當作激活函數來看待,其將某以卷積核的輸出輸入到兩個結構相同的卷積網絡,令其中一個的輸出為\(A\),另一個為\(B\)
GLU與GRU的區別就在於A輸出的激活函數不同:
\[GLU:H_0=A \otimes \sigma (B)\]

\[GTU:H_0=tanh(A) \otimes \sigma (B)\]

而CNN Seq2Seq就採用了GLU作為模型的激活函數

原文鏈接:

Convolutional Block Structure

編碼器與解碼器都是由多個卷積層構成的(原文中稱為block,實際上就是layer),每一層包含一個1維卷積核以及一個門控線性單元(Gated linear units, GLU)。假設單詞數即輸入長度為\(m\),kernel大小為\(k\),pad為\(p\),那麼計算輸出sequence長度的公式為\((m+2p-k)/stride+1\),只要適當的設置卷積核的kernel大小、pad以及步長參數,即可使得輸出序列與輸入序列的維度保持一致。在文中,輸入為25,kernel為5,則輸出序列長度為\((25+2*2-5)/1+1=25\)

另外,為了充分讓輸出節點跟整個sequence單詞有聯繫,必須使用多個卷積層,這樣才能使得最後一個卷積核有足夠大得感受野以感受整個句子的特徵,同時也能捕捉局部句子的特徵。

來看一下整個編碼器的前向傳播方式:

  • 每次輸入到卷積核的句子的大小為\(X \in R^{k\times d}\),表明每次卷積核能夠讀取的序列長度為\(k\),也就是卷積核的寬度為\(k\),詞向量維度為\(d\)
  • 卷積核的權重矩陣大小為\(W^{2d \times k \times d}\),偏置向量為\(b_W \in R^{2d}\),表明每一層有\(2d\)個卷積核,因此輸出序列的維度為\(2d\),而由於事先的設計,使得輸入序列與輸出序列的長度是相同的,因此經過卷積之後,得到的序列的矩陣大小為\(Y \in R^{k \times 2d}\)
  • 我們將上面的\(2d\)個卷積核分為兩個部分,這兩個部分的卷積核尺寸與個數完全相同,輸出維度也完全相同,則可以將其當作\(GLU\)的兩個輸入,輸入到GLU整合過後,輸出的序列維度又變為了\(\hat{Y} \in R^{k \times d}\)
  • 為了能夠實現深層次的網絡,在每一層的輸入和輸出之間採用了殘差結構
  • 對於解碼序列來說,我們需要提取解碼序列的隱藏表徵,但是解碼序列的解碼過程是時序遞歸的,即我們無法觀測到當前預測對象之後的序列,因此論文作者將輸入的decoder序列

這樣的卷積策略保證了每一層的輸入與輸出序列的一一對應,並且能夠將其看作簡單的編碼器單元,多層堆疊以實現更深層次的編碼。

Multi-step Attention

對於Attention的計算,關鍵就是找到 Query、Key 和 Value。下圖為計算Attention且解碼的示意圖

Attention的計算過程如下:

  • Query由decoder的最後一個卷積層的輸出\(h_i^l\)以及上一時刻decoder最終的生成的目標\(g_i\)共同決定,\(W^l_d\)\(b_d^l\)為線性映射的參數。
    \[d_i^l = W^l_dh^l_i+b_d^l+g_i\]

  • Key 則採用 Encoder 的輸出\(z_j^u\),典型的二維匹配模型,將 Query 與 Key 一一對齊,計算 dot attention分數:
    \[a_{ij}^l = \frac{exp(d^l_i \cdot z^u_j)}{\sum_{t=1}^mexp(z_j^u+e_j)}\]

  • Value 的值則取編碼器的輸出\(z_j^u\)以及詞向量表徵\(e_j\)之和,目的是為編碼器的輸出加上位置表徵信息。得到對應的 Value 值 \(c_i^l\) 之後,直接與當前時刻的 Decoder 輸出 \(h_i^l\) 相加,再輸入分類器進行分類。
    \[c_i^l = \sum_{j=1}^ma_{ij}^l(z_j^u + e_j)\]

Normalization Strategy

模型還通過歸一化策略來保證通過每一層模型的方差變化不會太大,這裏先簡單的記錄一下,具體的操作細節需要回去仔細琢磨代碼。歸一化的主要策略如下:

  • 對殘差網絡的輸入和輸出乘以 \(\sqrt{0.5}\) 來保證輸入和輸出的方差減半(這假設兩側的方差是相等的,雖然這不是總是正確的,但是實驗證明這樣做是有效的)
  • 由於注意力模塊的輸出向量為 m 個向量的加權和,因此將其乘以 \(m \sqrt{m}\) 來抵消方差的變化,其中,乘以 \(m\) 是為了將向量放大到原始的大小(實際中通常不會這麼做,但是這麼做的效果良好)
  • 由於採用了多重注意力機制的卷積解碼器,作者根據注意力機制的數量來對反向傳播到編碼器的梯度進行壓縮,這可以避免編碼器接收過多的梯度信息,使得訓練變得更加平穩。

Initialization

初始化的目的與歸一化是一致的,即都是為了保證前向與後項傳播的數據方差能夠保持在一個較穩定的水準,模型初始化的策略如下:

  • 此前如層都由平均值為0以及標準差為0.1的正太分佈進行初始化。
  • 對於其輸出未直接輸入門控線性單元的層,我們以正態分佈 \(N(0, \sqrt{1/n_l})\) 來初始化權重,其中 \(n_l\) 是每個神經元的輸入連接個數。 這樣可以確保正太分佈的輸入的方差得以保留
  • 對於輸出與GLU相連的層,我們採取不同的策略。如果GLU的輸入的均值為0且方差足夠小,則輸出方差可以近似等於輸入方差的1/4。 因此,需要初始化權重使得GLU激活的輸入具有該層輸入方差的4倍,即該層的初始化分佈為 \(N(0, \sqrt{4/n_l})\)
  • 此外,每一層的偏置 \(b\) 統一設置為0
  • 另外,考慮到 dropout 也會影響數據的方差分佈,假設dropout的保留概率為p,則方差將放大為 \(1/p\) 倍,因此上述提到的初始化策略需要修正為: \(N(0, \sqrt{p/n_l})\) 以及 \(N(0, \sqrt{4p/n_l})\)

最後的實驗部分就不記錄了,有興趣的同學可以去原文里看看。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

印度研究:森林大火致黑碳更濃 加速冰河融化

摘錄自2020年2月4日中央通訊社報導

印度一項最新研究顯示,森林大火引發的黑碳(black carbon)濃度增加,加速冰河融化,更引發海平面升高及氣候變遷惡化。印度斯坦時報(Hindustan Times)今天(4日)引述WIHG科學家內基(PS Negi)指出,經過研究團隊過去幾年在北阿坎德省根戈催里冰河(Gangotri Glacier)鄰近地區的觀察與研究,森林大火導致黑碳濃度增加近一倍,加速了這條冰河的融化速度。

黑碳是一種懸浮粒子,源於石油、煤、木炭、樹木、柴草、塑膠垃圾、動物糞便等含碳物質燃燒不完全及氧化後所形成的產物。內基說,黑碳已公認是造成氣候變遷的第二重要人為因素。由於黑碳吸收更多光源且釋放紅外線輻射,從而提高當地溫度,導致冰河融化。當喜瑪拉雅山區高處的黑碳濃度增加時,使喜瑪拉雅山區的冰河融化更快。他認為,由於源自全球、區域和本地的開發及污染不斷累積,導致喜瑪拉雅山區的黑碳濃度增加,進而加速冰河融化,連帶影響全球氣候變遷。

至於森林大火的起因,根據印度森林調查報告(Forest Survey of India),北阿坎德省通常在2到6月通報森林火災,火災起因包括人為因素及閃電。根據官方統計,從2000年以來,北阿坎德省森林大火導致4萬4554公頃的森林遭到破壞。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

溫暖海水底下竄 格陵蘭冰川加快融化速度

摘錄自2020年2月4日中央通訊社報導

科學家早就知道氣溫上升會造成格陵蘭冰川表層融化,但最新研究發現,另一項威脅也從冰川下方展開:在格陵蘭巨大冰川底下流動的溫暖海水使融冰速度加快。

這項研究今天(3日)刊登在英國期刊「自然地球科學」(Nature Geoscience),參與調查的學者研究格陵蘭東北部一條被稱為「北緯79度冰川」的眾多「冰舌」 (ice tongue)之一。美國有線電視新聞網(CNN)報導,冰舌就是漂浮在水上卻沒跟陸地冰層脫離的冰條。這群科學家研究的這條巨大冰舌將近80公里長。這項新研究顯示,一股來自大西洋且超過1.6公里寬的溫暖海水,能直接流向這群學者研究的冰川,讓大量熱能接觸冰層,進而加速冰川融化。

格陵蘭大量融冰是現在全球海平面上升的最主要原因,那裡的融冰水量能讓全球海平面上升超過7.3公尺。丹麥氣象研究所氣候科學家莫特拉姆(Ruth Mottram)曾指出,光是去年7月,格陵蘭冰層就有1970億噸的冰消失,相當於8000萬個奧運泳池的水量。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益

※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象

南投搬家前需注意的眉眉角角,別等搬了再說!

希臘擬建水上圍牆 恐增移民罹難機率

苦勞網2020年2月3日報導;陳韋綸編譯

為了阻止更多移民自土耳其前來,,此舉引發人道組織的抨擊,認為將增加庇護尋求者與難民途中遭遇的危險,反對派也稱計畫「愚蠢」,更不可能阻止移民。

希臘政府預計在愛琴海北部的勒斯博島(Lesbos)設置長達2.7公里的網狀屏障,屏障將高於海平面50公分,費用約為50萬歐元(約新台幣1,680萬元)。勒斯博島上的摩利亞(Moria)難民營,是希臘主要的難民接待中心,原本僅能容納3千人的難民營,如今卻擠滿1萬9千人,環境惡劣,。

「遊戲規則已經改變!」掌管移民與難民事務的部長米塔拉希斯(Notis Mitarakis)嚴詞宣告:希臘不是想來就來的地方,「我們將採取一切措施保護邊境」,甚至揚言將加速驅逐出境的流程。

去年共計7萬2千人抵達希臘,米塔拉希斯表示,今年1月起,只要不符合難民資格的人,幾個月內便會被遣返土耳其。對於一百多萬民因戰爭逃離敘利亞的難民而言,希臘是進入歐盟的閘門,與希臘僅有愛琴海之隔的土耳其,已收容4百多萬名敘利亞難民,人數是世界之最。

國際特赦組織(AI)批評,此計畫不但增加庇護尋求者與難民上岸的難度,也嚴重影響救援者的協助工作,要求政府採取必要的安全措施,確保這套系統不會造成更多人犧牲。,而且難以實現。「即便是孩子都知道,海上建牆是不可能的。」

※轉載自()

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置台北網頁設計,各種案例分享