#2010_nlp_progress

안녕하세요 여러분 ! 새해 첫 주말은 잘들 보내셨나요? 오늘로 벌써 한 해의 1.6% 가 지나가고 있습니다 🙂 다들 새해를 맞아 한 해 간 지킬 계획들을 많이 세우셨을텐데, 모든 분들의 새해 다짐이 꼭 이루어지길 기원합니다.

오늘은 지난 2010년대에 있었던 자연어 처리의 발전사를 간략하고 밀도 있게 소개한 트윗 글을 여러분께 소개해드리고자 합니다.

Amsterdam 대학에서 전산 언어학 교수를 지내고 있는 Willem Zuidema 교수는 2010년대에 자연어 처리에 있었던 신경망 기반의 발전을 10가지 사건과 그 사건을 구성하는 13개의 논문을 통해 정리해주었습니다.

지난 10년 간 자연어 처리 분야에서 어떠한 발전들이 있었는지 한 번 살펴보실까요?

cf) 각 사건을 설명하는 글들은 이전에 있었던 이론 및 개념을 실제로 '잊어버리자'는 것이 아닌, 당시 학계에 불었던 바람을 표현하고 있습니다. 진지하게 받아들이시기 보다는, 가벼운 마음으로 읽으시길 추천드립니다 🙂

ㅡㅡㅡㅡㅡㅡㅡㅡ

2010년대는 자연어 처리 분야에 있어 파란만장한 10년이었습니다. 저는 이 글을 통해 2010년 이후 있었던 10개의 충격적인 발전과 해당 발전을 이끌었던 13개의 논문에 대해 이야기해보고자 합니다. 해당 발전들을 통해 자연어 처리는 이전과 비교할 수 없을 정도로 성능의 발전을 이룩하였습니다.

Shock 1 (2010): 신경망 네트워크를 기억하시나요? 해당 네트워크는 우리가 생각했던 것보다 자연어 처리에 훨씬 더 효과적이었습니다. Recurrent Neural Networks(RNNs, [1])와 Recursive Neural Networks (RNNs, [2])를 배워봅시다!

[1] Tomáš Mikolov et al.: Recurrent neural network based language model
[2] Richard Socher et al.: Learning Continuous Phrase Representations and Syntactic Parsing with Recursive Neural Networks

Shock 2 (2013): 이제 간단한 Recurrent, Recursive Networks들을 잊어버립시다. 그 대신 Long Short Term Memory(LSTM)를 사용합시다.

[3] Alex Graves: Generating Sequences With Recurrent Neural Networks

Shock 3 (2013): Distributional semantics를 기억하시나요? 좋습니다. 이제 해당 개념들을 다 잊어버리고 Word2Vec을 학습합시다!

[4] T Mikolov et al.: Distributed Representations of Words and Phrases and their Compositionality

Shock 4 (2014): 이제, 통계 기반 기계번역(SMT)에서 사용했던 구 단위 기계번역은 잊어버리고 Seq2Seq에 대해 학습합시다. 아참, LSTM은 기억하고 계신가요? 좋습니다. 이제 LSTM보다 간단한 구조를 지니며, 때때로 더 좋은 성능을 보이기도 하는 GRU도 함께 학습합시다.

[5] Cho Kyunghyun et al.: Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation

Shock 5 (2014): Seq2Seq을 기억하시나요? 좋습니다. 이제 Seq2Seq과 Attention을 함께 사용하는 방법을 학습합시다.

[6] Dzmitry Bahdanau et al.: Neural Machine Translation by Jointly Learning to Align and Translate

Shock 6 (2014): Deep Learning은 저희 생각보다 더 강력했습니다. End-to-end로 구성된 신경망 모델이 Speech recognition에서 SOTA를 달성했습니다!

[7] Awni Hannun et al. : Deep Speech: Scaling up end-to-end speech recognition

Shock 7 (2015): Symbolic structure의 전통적 이론들도 안전하지는 않았습니다. 2015년 Recursive 신경망이 Logic을 학습하기 시작했습니다 [sort of, 8]; 또한 bi-LSTM 기반의 파서는 Syntactic parsing에서 SOTA를 달성했습니다. [9]

[8] Sam Bowman et al.: Recursive Neural Networks Can Learn Logical Semantics
[9] Eliyahu Kiperwasser et al.: Simple and Accurate Dependency Parsing Using Bidirectional LSTM Feature Representations

Shock 8 (2016): 2016년 신경망 기반의 기계번역 시스템이 기계번역 분야에서 선두에 등극했습니다. 같은 해, Google Translate 역시 신경망 기반 기계번역을 사용하기 시작합니다.

[10] R Sennrich et al.: Edinburgh Neural Machine Translation Systems for WMT 16

Shock 9 (2017): LSTM을 기억하고 계신가요? 좋습니다. 이제 "Attention이 우리가 필요한 모든 것"이기 때문에(Attention Is All You Need) LSTM은 전부 잊어버립시다.

[11] Ashish Vaswani et al.: Attention Is All You Need

Shock 10 (2018): Word2Vec을 기억하시나요? 좋습니다. 이제 Word2Vec은 잊고 문맥을 활용한 Word Embedding를 학습합시다. (ELMO [12], BERT [13])

[12] M Peters et al.: Deep contextualized word representations

[13] J. Devlin et al.: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

저에게 2010년대는 쉴새 없이 출간되는 논문들을 따라 잡고, 강의 Syllabus를 재조정하고, 폭발적으로 늘어나는 학생들을 관리하느라 정말 힘든 10년이었습니다.

그럼에도 이러한 변화들이 계속해서 일어나는 자연어 처리 분야에 몸을 담고 있는 것은 제게 큰 특권이라고 생각합니다!

ㅡㅡㅡㅡㅡㅡㅡㅡ

저는 개인적으로 어떤 공부를 새로이 시작할 때 최신 기술을 바로 공부하는 것보다 해당 기술의 발전사를 기반으로 학습을 하는 것을 선호하는데, 글을 읽으며 제가 자연어 처리를 처음으로 공부하던 시기에 본 트윗을 만났으면 좋은 이정표로 삼을 수 있었겠다라는 생각을 많이 했습니다 🙂

지난 10년 간 자연어 처리 발전을 이해하는데 여러분께 많은 도움이 되셨기를 바랍니다.

P.S) 본 포스트의 사진은 WarNik Chow님의 슬라이드에서 발췌하였습니다 !

original tweet: https://twitter.com/wzuidema/status/1212727352037429248

Posted by uniqueone
,

Visual Odometry 방법 중 direct method를 사용한 Direct Sparse Odometry(DSO) 논문의 내용 일부분을 정리한 pdf 파일입니다.

대부분의 내용은 https://blog.csdn.net/xxxlinttp/article/details/89379785 블로그를 보면서 참조했습니다. (저처럼 중국어를 모르시는 분들은 중/영 번역을 하신 다음 보시면 될 것 같습니다.)

direct method는 pose tracking을 수행하기 위해 거의 전적으로 최적화에 의존하고 있어서 대부분의 내용이 최적화와 관련된 내용인 것 같네요. 추가적으로 DSO 논문에서는 photometric calibration parameter (a,b)와 inverse depth까지 추가되어서 조금 더 복잡한 식이 유도되는 것 같습니다

아직 정확히 모르는 개념들이 많아서 (SSE2 프로그래밍, Photometric Calibration, ...) 정리되는대로 업데이트하려고 합니다

논문 링크: http://vladlen.info/papers/DSO.pdf

코드 링크: https://github.com/JakobEngel/dso

논문과 코드를 보실 때 같이 참조해서 봐주시면 어느정도 도움이 될 수 있을 것 같습니다

개인적으로 공부하기 위해 작성한 자료여서 틀린 부분도 존재할 것 같네요. 혹시 틀린 부분이 있다면 말씀해주시면 감사하겠습니다

Posted by uniqueone
,

안녕하세요 SLAM공부 중인 김기섭입니다.

Complex Urban Dataset 에서는 (https://irap.kaist.ac.kr/dataset/download_1.html)

다양한 도시환경에 대해 LiDAR data를 제공하고 있는데요,

서울, 여의도, 판교 등 현재 공개된 데이터셋들 중에서는 제일 다양한 복잡한 도시환경을 제시하고 있다고 생각됩니다.

근데 전방을 보는 360도 3D lidar 가 없어서 아쉬움이 있었는데요

2D lidar 를 쌓은 point cloiud map 을 불러와서

GT 포즈 기반으로 projection해서 virtual 3D scan 을 만드는 코드를 짜봤습니다.

완전히 실제라고 할수는 없지만,

ray 수, vertical FOV, maximum range 등을 사용자가 원하는대로 조절할 수 있기 때문에

또 어떤 목적에서는 유용할 거 같기 (를 기대하며..!) 도 하네요...

코드: https://github.com/kissb2/ComplexUrbanH3DS

예시: https://youtu.be/ZUZ0dMMz17U

감사합니다.

Posted by uniqueone
,

최근 여러 국가에서 오마주하고 있는 교육 프로그램 에꼴 42의 수료생인 Emil Wallner라는 ML 리서쳐가 자신이 어떻게 인터넷 자료들만 가지고 ML 리서쳐가 될 수 있었는지에 대해 그 학습 방법을 공유한 글이 있습니다.

Coursera 수료증 같은 것이 아니라 실질적으로 어떠한 Output을 내야 Internet-educated들이 ML/DL 분야에서 직업을 얻을 수 있을지에 대한 현실적인 조언과 함께 유용한 정보가 많이 담긴 글이기에 공유를 드립니다 !
+) Emil Wallner는 현재 Google Arts에서 레지던시 프로그램을 지니고 있습니다.

2020년 ML/DL 분야의 공부를 새로이 시작하시려는 분들께 좋은 이정표가 되리라 믿습니다 🙂

P.S 글을 잘 읽으셨다면 번역이 아닌 원 글(https://github.com/emilwallner/How-to-learn-Deep-Learning)에 스타를 눌러주시면 좋을 것 같습니다 !

 

 

https://github.com/Huffon/How-to-learn-Deep-Learning/blob/master/README_kr.md?fbclid=IwAR0COIWxF6BIGUg6abyCcErL-BK8B4ghDpycBNHkR7BSApSD8wz-BJrJnR0

 

접근법

Deep Learning에 중점을 두고, High-level 프레임 워크부터 학습하는 실용적인 Top-down식 접근법을 취합니다.

시작 [2 개월]

Deep Learning 학습에 박차를 가하기 위해서는 다음 3개의 주 목적을 달성해야 합니다:

  1. 앞으로 사용할 도구들에 익숙해져야 합니다. (e.g. 파이썬, CLI, 주피터 노트북 등)
  2. 데이터 수집부터 훈련 모델 배포까지 워크 플로우의 모든 과정에 익숙해져야 합니다.
  3. Deep Learning 사고 방식을 지녀야 합니다: 어떻게 Deep Learning 모델들이 동작하고, 어떻게 해당 모델들을 개선시킬지와 같은 직감을 길러야 합니다.
  • 한 주간 codecademy.com에서 시간을 보내며 파이썬 기본 문법, CLI 그리고 git을 학습합니다. 만약 여러분이 프로그래밍 경험이 없이 시작하셨다면, 어떻게 프로그램을 작성하는지 학습하기 위해 몇 개월을 본 스텝에 투자하는 것이 좋습니다. 그렇지 않으면 여러분은 이후 과정에서 쉽게 좌절하게 될 것입니다.
  • Pandas, Scikit-learn 그리고 Jupyter Notebook 을 이용해 Kaggle 문제를 푸는데 1-2주의 시간을 할애합니다. 이때, Titanic, House prices, Iris 문제가 좋은 출발점이 될 수 있습니다. 본 과정을 통해 여러분은 Machine Learning에 대한 사고 방식과 워크 플로우를 익힐 수 있습니다.
  • 클라우드 GPU에서 모델을 구현하는데 한 달을 할애합니다. 이 때, FastAI 코스로 본 스텝을 시작하는 것을 추천드립니다. FastAI 커뮤니티는 Deep Learning 기술들을 적용하고 최신 기술과 관련된 정보를 공유하기 좋은 장소입니다.

여러분이 위 과정을 모두 완수하셨다면, 이제 어떻게 머신러닝에 가치를 부여할지에 대해 알게된 것입니다.

포트폴리오 [3 - 12 개월]

포트폴리오는 새로운 기회를 위한 일종의 창구입니다. 그렇기 때문에 여러분이 관심 있는 주제로 포트폴리오를 제작하는 것이 중요합니다. 포트폴리오는 또한 Machine Learning의 여러 다양한 분야를 경험할 수 있는 좋은 기회이기도 합니다. 만약 여러분이 ML 중 어느 분야로 프로젝트를 시작할지 고민 되신다면 '컴퓨터 비전' 혹은 '자연어 처리' 프로젝트로 시작할 것을 추천드립니다. 다음은 포트폴리오와 관련해 작성한 제 트위터 스레드입니다: 포트폴리오 아이디어 내는 법, 포트폴리오 작성하는 법.

사람들이 가장 많이 실수하는 부분은 프로젝트 경험 대신 온라인 코스 수료증을 따는데 불필요한 시간을 투자하는 것입니다. 실무자들은 대개 온라인 코스 수료증을 신뢰하지 않습니다. 대신 저와 같이 인터넷을 통해 Deep Learning을 학습한 사람들은 다음과 같은 이력들로 자신의 지식을 증명할 수 있어야 합니다:

  • 좋은 컨퍼런스에 논문 투고
  • ML 관련 경진대회에서 수상
  • 유명한 오픈 소스 프로젝트에 PR을 통해 기여
  • ML 관련된 글로 5-10만 뷰 달성
  • 매주 100명 이상이 사용하는 ML 툴 제작
  • ML 관련 직업
  • ML 아트

만약 아직도 좋은 첫 프로젝트에 대한 감이 잡히지 않는다면, Twitter 내 사람들에게 DM을 날려보세요. 여러분들께 영감을 주는 작업을 하는 사람들을 Twitter에서 찾아 당신이 지금까지 해온 것들과, 무엇을 달성하고 싶은지에 대해 이야기해보세요. 50-100명의 사람들에게 메시지를 보낸 후, 당신은 사람들이 얼마나 다른 사람들에게 도움을 주고 싶어하는지를 보고 놀라게 될 것입니다.

다만 제가 제시한 이전 과정들을 모두 성실하게 수행하고, 낯선 사람들에게 메시지를 보낼 때 지켜야 할 예절 등을 꼭 확인하고 접근하시길 바랍니다.

이론 101 [1 - 3 개월]

논문을 읽는 방법을 배우는 것은 여러분의 프로젝트를 개선하는데 분명 좋은 작용을 합니다. 특히, 여러분이 리서치 분야로 진출하고 싶다면 논문 읽기는 필수 과정이기도 하죠. 논문을 읽는데 어려움이 없으려면 다음 3가지 분야를 핵심적으로 이해하고 있어야 합니다:

  1. 가장 자주 사용되는 알고리즘, 경사 하강법, 선형회귀, 다중 퍼셉트론 등에 대한 이해
  2. 가장 자주 사용되는 50가지 수식에 대한 이해
  3. 선형대수, 미적분, 통계학 그리고 Machine Learning의 기본적인 이해
  • 파이썬 Numpy의 핵심 개념을 손으로 직접 코딩하는데 한 달을 할애합니다. 이때 최소자승법, 경사하강법, 선형회귀 그리고 Vanilla 신경망 등에 대한 코딩도 하셔야 합니다. 제겐 Andrew Trask의  블로그가 해당 연습을 하기 가장 적합한 자료였습니다. 해당 연습은 여러분이 다음 과정을 수행함에 따라 발생하는 인지부하를 줄여줄 것입니다.

  • 저는 Deep Learning 이론 커리큘럼에 있어 최고의 스텝은 Ian Goodfellow, Yoshua Bengio 그리고 Aaron Courville가 집필한 Deep Learning Book을 읽는 것이라 생각합니다. 저는 해당 책을 교재 삼아 책에 담긴 모든 디테일들을 학습하기 위해 노력했습니다. 물론 해당 책을 읽기 전 최소 6개월의 실무 경험이나 수학/통계적 배경을 가지고 시작하는 것이 좋습니다.

  • 책의 도입부에 등장하는 수식을 외우는 것은 여러분의 생각보다 아주 큰 도움이 됩니다. 수식은 아주 잘 짜여진 로직이고, 이를 어떻게 코드로 녹여낼지를 이해하는 것은 여러분이 이론을 보다 친숙하게 느낄 수 있도록 도와줄 것입니다. 만약 한 주라는 여가 시간이 있다면, 3Blue1Brown 채널의 Essence of linear algebra, the Essence of Calculus, StatQuests 채널의 the Basics (of statistics), Machine Learning과 같은 영상을 시청할 것을 추천드립니다. 이후 Anki와 같은 암기 어플리케이션을 활용해 핵심 개념을 외우는 것이 아주 큰 도움이 될 것입니다. 이때, 가능한 많은 그림 자료를 사용하는 것이 암기에 있어 더 큰 도움이 됩니다.

  • 만약 여러분이 공부에 할애할 수 있는 시간이 2-3 개월 더 남았다면, Deep learning book의 파트 1을 읽는데 그 시간을 할애하세요. MachineLearningGod은 동영상을 통해 어떻게 해당 책을 보다 잘 학습할 수 있는지에 대해 설명해주고 있습니다. 각종 개념들을 이해하기 위해 동영상 강의를 적극 활용하시고, Anki와 Khan academy 어플리케이션을 활용해 개념들을 암기 및 이해할 수 있도록 노력하세요.

첫 번째 논문 [6 - 12 개월]

[작업 중]

포럼

본인이 학습했던 과정에 대한 기록

다른 좋은 학습 전략들

글을 읽고 더 나은 의견이나 질문이 있으시다면 이슈 혹은 Twitter를 통해 연락해주세요.

Posted by uniqueone
,

Open-source chatbot project from Microsoft!

https://www.profillic.com/paper/arxiv:1912.08904

Macaw: A conversational bot that enables research for tasks such as document retrieval, question answering, recommendation, and structured data exploration

Posted by uniqueone
,

안녕하세요, 마키나락스의 김기현입니다.

연말연시 연휴를 맞이하여 #마키나락스 에서 연구하는 주제 중에 하나인 #이상탐지 (#AnomalyDetection) 에 대해서 블로그 포스팅 해보았습니다.

산업에서의 활용도와 중요도에 비해 이상탐지 문제는 많은 연구와 표준 연구 환경이 잘 정의되어 있지 않은 것 같습니다. -- 당장 이름부터 anomaly detection, outlier detection, novelty detection, out of distribution 등이 혼용되고 있습니다.

이번에는 [이상탐지의 문제 셋업에 대한 소개]와 [오토인코더를 활용한 이상탐지]에 대해서 다루었습니다. 앞으로 틈틈히 시간 날때마다 관련 분야에 대해서 포스팅 하도록 하겠습니다.

1. Introduction to Deep Anomaly Detection:

https://kh-kim.github.io/blog/2019/12/12/Deep-Anomaly-Detection.html

2. Autoencoder based Anomaly Detection:

https://kh-kim.github.io/blog/2019/12/15/Autoencoder-based-anomaly-detection.html

혹시 수정이 필요하거나, 질문이 있으신 분들은 편하게 의견 주셔도 좋습니다!

Posted by uniqueone
,

Deep Learning Models

A collection of various deep learning architectures, models, and tips for TensorFlow and PyTorch in Jupyter Notebooks.

By Sebastian Raschka : https://github.com/rasbt/deeplearning-models

#ArtificialIntelligence #DeepLearning #MachineLearning

Posted by uniqueone
,

A birds-eye view of optimization algorithms

By Fabian Pedregosa: http://fa.bianp.net/teaching/2018/eecs227at/

#ArtificialIntelligence #NeuralNetworks

Posted by uniqueone
,

안녕하세요 SLAM공부 김기섭입니다.

ORB SLAM study 2부가 곧 시작되는 걸로 알고 있는데요!

#

그래서 피처기반 슬램의

제일제일 기본이 되는

코너찾기에 관한 조은 자료가 있어 들고와봤습니다

https://medium.com/pixel-wise/detect-those-corners-aba0f034078b

설명이 간결하고 파이썬 기반 코드가 있어서

직접 해보면서 느낄 수 있다는 게 장점인 것 같습니다.

이거랑 다크프로그래머님의 유명한 게시글 https://darkpgmr.tistory.com/131 를 같이보면 이론적으로도 균형이 맞을거같습니다.

#

백문이 불여일견이라고 SLAM은 실습이 중요한거같습니다!

비현실세계 이미지 몇장에 대해서 테스트해보기는 아쉽고 따로 하드웨어 세팅하기는 귀찮아서

노트북 내장 카메라 이미지를 받아서 코너 디텍션 성능 비교를 진행해보았습니다.

코드는 https://github.com/kissb2/laptop-slam/tree/master/practice/1_corner_det

실습영상은 https://youtu.be/nWuMZTckWek

입니다.

정말정말정말 간단하니 각자 노트북으로 한번 돌려보시면 재밌을거에요!

감사합니다.

다들 새해복 많이받으시길 바래요

Posted by uniqueone
,