星期五。見面

程式 | 學習 | 日記 | 玩樂

    [論文速速讀]系列文章介紹

前言

論文速速讀系列是從今年四月開始,我開始寫一些論文的中文讀書筆記,還記得第一篇是[論文速速讀]ReZero is All You Need: Fast Convergence at Large Depth,之後發現儘管自己已經陸續產出了幾篇文章,可是好像都沒正式的跟大家介紹這系列文章的由來xD

所以這篇文章就是來講講這系列文章到底是什麼,以及我會和會想寫這些文章。

論文速速讀系列是什麼?

由於在AI領域每年總是有一些非常重大的突破和應用,如果跟不上潮流很有可能就會錯失許多機會。例如,對NLP領域熟悉的話你一定聽過2013年的word2vec、2014年開始流行的attention、2018年的Bert…這些很有名的技術。

還記得Bert剛出的時候我好像剛進碩士實驗室,當時只知道這個技術屌打了當時一堆NLP的研究,但我想也想不到兩年後Bert已經造成如此大的影響力,一堆基於Bert的變形應用在各大領域上都取得了非常優異的結果。

因此,我想要藉由這系列的文章讓自己能夠更加快速的了解AI的新技術和研究,同時逼迫自己看論文xD

繼續閱讀

    [課程筆記]課程筆記系列總覽

本文記錄了自己在上課時所記錄的一些課程筆記,可以透過這邊文章連結到所有以往發過的課程筆記文章。

繼續閱讀

[OpenCV]Optical Flow介紹

以下介紹來自OpenCV的官方文獻,這份文章是我在閱讀完畢後使用中文整理的筆記。

Goal

  1. 了解Optical Flow的概念,以及如何使用Lucas-Kanade method來計算它
  2. 使用cv.calcOpticalFlowPyrLK()來追蹤影片的特徵點
  3. 使用cv.calcOpticalFlowFarneback()來計算稠密光流
繼續閱讀

[Pytorch]Pack the data to train variable length sequences

前言

在NLP task中常常會遇到input data長度不固定的問題,一般來說此時有兩種方法處理: 對資料padding補齊到相同長度,或是截斷超過某個長度的data。不過其實還有一種更有效率的方法,就是PackSequence,這篇文章將會針對Pytorch的PackSequence做一系列的介紹,包含概念和使用技巧。

關於PackSequence,在Pytorch的documenttorch.nn.utils.rnn定義了以下的object / function:

  • nn.utils.rnn.PackedSequence
  • nn.utils.rnn.pad_sequence(): Pad a list of variable length Tensors with padding_value
  • nn.utils.rnn.pack_padded_sequence(): Packs a Tensor containing padded sequences of variable length.
  • nn.utils.rnn.pad_packed_sequence(): Pads a packed batch of variable length sequences.
  • nn.utils.rnn.pack_sequence(): Packs a list of variable length Tensors

主要重點在於pad_sequence(), pack_padded_sequence(), pad_packed_sequence(),而pack_sequence()其實就是pad_sequence()+pack_padded_sequence(),最後再來談。

繼續閱讀

[論文速速讀]Going deeper with convolutions

〖想觀看更多中文論文導讀,至[論文速速讀]系列文章介紹可以看到目前已發布的所有文章!〗

paper: https://arxiv.org/pdf/1409.4842.pdf

GoogLeNet,Google 2015年在CVPR發表的paper,也是ILSVRC 2014的冠軍(Classification & Detection),會這樣取名是為了致敬LeNet,所以特地把google的l給大寫了。

這篇介紹會聚焦在Classification和模型的部分,所以對於Detection會跳過或快速帶過,有興趣可以去看原文。

Abstract

The main hallmark of this architecture is the improved utilization of the computing resources inside the network. This was achieved by a carefully crafted design that allows for increasing the depth and width of the network while keeping the computational budget constant.

ILSVRC 2014的冠軍,恭喜恭喜( ゚∀゚)o彡゚

Google透過提出了Inception的深度神經網路結構,主要改進了網路內計算資源的使用效率,並能在計算資源固定下能夠訓練得更深更廣。

繼續閱讀

[論文速速讀]Visualizing and Understanding Convolutional Networks

〖想觀看更多中文論文導讀,至[論文速速讀]系列文章介紹可以看到目前已發布的所有文章!〗

paper: https://arxiv.org/pdf/1311.2901.pdf

ZFNet可說是CNN可視化的開山始祖,儘管AlexNet中作者也簡單地拿出第一層的feature map做出了可視化(看我看我),不過這種簡單的方法只能用在第一層,因為後面層隨著Conv和Pooling維度降低,此時就沒辦法輕易的看出來feature map是什麼東西了。

ZFNet這篇文章中透過反卷積,或者叫做DeConvnet(或者Transpose Convolution…網路上很多種叫法…)來做到可以對每一層的Conv layer進行可視化,並透過此技術來觀察並調整AlexNet的架構,然後就贏下了ILSVRC 2013年的冠軍,恭喜恭喜!

並且,除了這些還做了一堆實驗,真的是很用心ㄋㄟ,所以我才會看這麼久(ヾノ・ω・`)

Abstract

Large Convolutional Network models have recently demonstrated impressive classification performance on the ImageNet benchmark (Krizhevsky et al., 2012). However there is no clear understanding of why they perform so well, or how they might be improved. In this paper we address both issues.

CNN架構在圖像分類領域上取得了巨大的成功,但是,還沒有研究去說他們為何可以有如此好的表現,以及應該如何針對模型架構去改進。

這篇文章中主要解決了這兩個問題,第一是提出了一種新的可視化技術可以更加了解中間層的運作,透過這個技術他們去微調了AlexNet的模型並得到了更好的結果。此外他們也透過ablation study找出不同層對於model的貢獻。

繼續閱讀

碩二生活總結

時光冉冉,歲月如梭,記憶中初次踏入交大宿舍的那一刻仍依舊鮮明,如今的我卻已經是個即將從這間學校畢業的碩士生了。回首兩年碩士生涯,有成功也有挫折、有喜悅也有悲傷…

這是我論文致謝的第一段,兩年其實並不長,但卻發生了很多事。

如今碩二的生活在109年7月13日正式劃下句點(我在今天正式拿到了畢業學位證書,痛哭流涕),於是想寫一篇文章回顧一下碩二的生活,為自己的生活做個紀錄。

(想了解我碩一的生活可以看: 碩一生活總結)

繼續閱讀

[論文速速讀]ImageNet Classification with Deep Convolutional Neural Networks

〖想觀看更多中文論文導讀,至[論文速速讀]系列文章介紹可以看到目前已發布的所有文章!〗

paper: https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf

AlexNet,2012年的ILSVRC冠軍,也是首度使用了CNN模型屌打傳統的ML方法,讓大家開始脫離手工提取特徵的時代。

這一篇只有9頁,對比於上一篇LeNet,真是感激萬分。

Abstract

To make training faster, we used non-saturating neurons and a very efficient GPU implementation of the convolution operation. To reduce overfitting in the fully-connected layers we employed a recently-developed regularization method called “dropout” that proved to be very effective.

摘要主要點出了幾個使用到的技術:

  • non-saturating neurons: 就是ReLU La~
  • effifient GPU implementation: 各位當時的設備很可憐阿QQ GPU的memory非常少R,所以他們把model分到兩個不同的gpu,然後再去共享data
  • 使用了dropout來避免overfitting
繼續閱讀

>