안녕하세요! 
오랜 만에 글을 올리는것 같네요ㅎ

대학원 박사과정을 시작하기 전까지는 블로그 글을 많이 올렸던 것 같은데, 박사과정이 시작되고는 글 올리는게 쉽지 않네요 ㅜ

요즘에는 블로그 보다는 Notion을 이용하여 글을 작성하고 있는데, 많은 분들께 공유가 안된다는 점이 조금 아쉽네요ㅜ
.
.

그래서, 이번 글에서는 간단하게 한 해 동안 무엇을 했는지 정리하고, 남은 기간에 무엇을 할지에 대해서 말씀드리려고합니다! (물론 궁금하진 않으시겠지만..ㅎㅎ)

 

 

[2022년 경험한 것들]

1. MRI, CT 데이터 공부!

  • 올해는 MRI, CT 관련 딥러닝 연구를 진행했습니다!
  • 처음 다루는 데이터다 보니 데이터의 배경지식 및 여러 전처리 방식들을 정리할 수 있어서 좋았어요ㅎ 

 

  • 예를 들면, 딥러닝 학습을 위해 (brain) MRI nifti 파일을 어떻게 전처리 하면 좋은지, CT DICOM 파일에서 특정 병변을 더 잘 보이게 하기 위해 어떤 작업이 선행돼야하는지, 2D DICOM 데이터를 3D nifti 데이터로 변환시킬 때 어떤 부분을 주의해야하는지 등을 정리할 수 있었습니다!

 

  • 의료 영상 이미지는 일반 이미지와는 달리 여러 특성들이 meta 정보로 주어지기 때문에 이를 이용해 적절한 전처리 작업을 거쳐야 해요. 그래야, 딥러닝이 학습하기 좋은 데이터셋이 됩니다!
  • 이렇게 잘 정리한 자료를 토대로 내년 부터는 본격적인 의료 딥러닝 리서치 및 연구를 진행할 예정이에요!! (물론, 전처리 관련 자료는 지속적으로 피드백 받으면서 업데이트 해나갈 예정입니다 ㅎ)

 

2. 대회는 또 달라!

  • 올해부터는 처음으로 의료 인공지능 대회를 참가하기 시작했어요.
  • 대회를 참가하면서 좋았던 것은 실제 의료 현장에서 시급하게 다루어지는 문제들을 쉽게 접해 볼 수 있었어요.
  • 또한, 검증받은 public dataset으로 MRI, CT, 3D, 2D, segmentation, object detection, classification 과 같이 다양한 딥러닝 task를 빠른 시간내에 배우고 습득할 수 있었다는 점입니다.
  • 제 경우에는 대회 참가 시 팀을 구성하는데, 이번에 팀 단위의 작업을 하면서 어떠한 협업 시스템이 마련되면 좋은지를 느낄 수 있었습니다.
  • 그래서, 관련 협업 개발도구를 사용할 수 있어서 개발능력도 향상 됐던것 같아요ㅎ

 

  • 팀 단위의 협업 시스템을 통해 짧은 시간안에 다양한 실험을 할 수 있었고, 운 좋게도 MICCAI라는 국제 학회의 ISLES라는 challenge에서 2등을 수상할 수 있었습니다!!
  • 해외학회에 참석하여 대회에 참석했던 많은 경쟁자들과 서로의 방법에 대해 논의 할 수 있었고, 새로운 동기부여들도 얻을 수 있어 좋았습니다. (해당 대회는 따로 글을 작성하도록 하겠습니다 ^^)

 

 

 

 

3. 자료화와 협업은 필수!

  • 대학원에서 성과를 내지 못하고 있을 때,  "연구 능력이 없는것 같다", "이런 기초지식도 없으면서 뭘 하겠다는건지" 와 같은 생각을 하면 굉장히 힘들거에요 ㅜ
  • 하지만, 자신이 처한 문제를 오로지 개인의 탓으로 돌리는건 효과적인 문제 해결방식은 아닌것 같습니다.
  • 현재 겪고 있는 문제가 개인의 문제가 아닌 시스템의 문제일 수 도 있기 때문이죠.
  • 물론 개인의 노력이 문제를 해결하는 근본적인 방법이겠지만, 좋은 시스템이 갖춰져 있다면 문제 해결은 좀 더 빨라질거라 생각합니다!
  • 제가 축구를 좋아해서 가끔씩 생각 했던 부분이기도 한데, 예전에만해도 잘 나가는 팀의 기준은 얼마나 좋은 스타플레이어들을 보유하고 있느냐였던 것 같아요.
  • 하지만, 현대 축구로 넘어오면서 얼마나 좋은 감독을 보유하고 있는지가 중요해지기 시작했는데, 그 이유는 그 감독이 팀에 좋은 시스템을 심어 놓기 때문이라고 생각해요.
  • 저는 제가 연구하는 곳이 개인에 의존하기 보다는, 누가 들어와도 잘 성장할 수 있는 좋은 시스템을 보유한 곳이었으면 좋겠어요.
  • 그래서, 올해 저 또한 좋은 시스템을 구축하기 위해서 모두가 이해할 수 있는 자료를 만들고 협업을 위한 다양한 시도를 한 것 같습니다!
  • 내년에는 좀 더 갖춰진 시스템으로 연구성과에 속도를 가해볼까해요ㅎ

 

 

 

[11월, 12월 계획]

  • 이제 올해도 2달 정도가 남은 것 같습니다.
  • 11월, 12월 계획은 지금까지 진행했던 의료 영상 관련 자료를 업데이트 하며, 의료 영상 전처리를 위한 모듈을 정리하려고 해요. 
  • 앞서 언급했던대로 내부 github을 만들어 의료 영상 처리의 기본 전처리 모듈을 만들 예정입니다.
  • 또한 대회에 참가했던 methodology를 논문화시키려고 하고 있습니다!
  • 추가적으로 이 분야를 모르지만 관심있는 분들을 초대해 정리한 내용들의 퀄리티 체크를 진행할 예정이에요. 이해가 잘 안되는 부분들은 보완하여 교육자료의 질을 향상시킬 예정입니다.

 

 

[개인적인 홍보]

  • 내년에도 역시 연구와 병행하면서 큰 국제 대회를 2개정도 나가려고 합니다!
  • 그 대회를 수행하려면 어느정도 의료 인공지능 연구 경험이 있어야 해요ㅜ
  • 저는 지금까지 팀원 구성을 특정 소속인원들만으로 구성해본적이 없습니다. 
  • 그래서 지금도 서울, 포항, 울산 등에서 대학원 및 스타트업 소속인원들과 작업을 하고 있습니다ㅎ (물론 의료 도메인을 전혀 모르시는 분들도 많으셨구요!)
  • 내년 대회 또는 앞으로 의료 인공지능 연구 또한 다양한 인원들과 스터디하여 진행하려고 합니다!
  • 그래서 의료 인공지능을 위한 스터디원(팀원)을 모집하려고 해요!
  • 개인적으로는 협업할 수 있는 자세를 갖고, 지속적으로 시간을 투자해 같이 공부할 수 있는 분들이 지원해주셨으면 좋겠어요ㅜ
  • 사실 고등학생이나 대학교 학부생 분들이 지원하셔도 크게 상관없습니다. 제가 팀을 구성하려는 기준은 다양성이라서요!

 


[앞으로의 바램]

  • 물론 많은 시간이 소요되는 작업들이지만, 이것이 모두를 성장 시킬 수 있는 가장 빠른 방법이고 시간이 지날 수록 연구속도를 가속화 시키고 좋은 성과를 뱉어내는데 필수적인 역할을 할 것으로 기대하고 있어요.
  • 스타트업이나 회사에서만 배울 수 있는것이 많은게 아니라, 대학원에서도 배울 수 있는게 많았으면 좋겠다는 마음가짐으로 스터디원을 꾸려나갈 생각입니다!
  • 이러한 협업 연구시스템을 구성하는게 또 하나의 좋은 연구 방법이다라는 생각이 들겠금 많은 연구성과로 보여줄 수 있도록 노력하겠습니다! 

 

[공지]

  • 그리고 앞으로는 이 블로그에서 기술관련 내용 보다는 이렇게 개인적인 소식을 전달해 드리는 글을 작성할 것 같습니다!


[하고 싶은 말]

  • 공부를 잘 하고 좋은 성과를 내는 것도 중요하지만, 연구하는 그 과정이 즐거웠으면 좋겠어요.
  • 모른다고 해서 무시받을게 걱정되는게 아니라, 모른다고 말할 수 있는 연구 문화가 됐으면 좋겠어요.
  • 개인의 성장은 누군가의 도움으로 이루어진 것이라고 생각했으면 좋겠어요. 
  • 그리고 이러한 이야기들이 듣기 좋은 이상적인 이야기가 아니라 현실적으로 공감하는 이야기가 됐으면 좋겠어요.
  • 단순히 어떠한 큰 포부를 갖고 있거나 신념이 있어서 하는 말이 아니라 그냥 그랬으면 좋겠어요.


P.S. 같이 의료 인공지능관련하여 연구하고 스터디 하시고 싶으신 분이 있으시면 아래 메일로 연락주세요!

89douner@gmail.com

 

그럼 연말에 한 번 다시 찾아뵙도록 하겠습니다!

안녕하세요.

 

지난 글에서는 representation learning에 대해서 알아보았다면, 이번 글에서는 unsupervised learning으로 학습시킨 representation model을 어떻게 pretraining model로써 사용했는지 알아보도록 하겠습니다.

 

우리는 보통 supervised learning 기반의 Deep Neural Network (DNN) 모델deep supervised network라고 합니다. 이러한 deep supervised network는 이미지 분야, 시계열 분야 등 다양한 task 도메인에 따라 CNN, RNN 같은 모델로 확장되어 왔죠. (기존 DNN이 naive한 모델이라고 한다면, CNN과 RNN 같은 모델은 convolution, recurrence 와 같은 DNN에 비해 architectural specializations 한 모델이라고 일컫습니다)

 

하지만, 이러한 CNN, RNN이 아닌 오로지 fully connected layer로 구성된 DNN 방식으로 supervised task에 잘 동작하게 만든 학습 방법이 등장합니다.

 

그림출처: https://paperswithcode.com/methods/category/convolutional-neural-networks

 

 

"이 학습방법은 unsupervised learning 방식으로 pretraining 모델을 만들고, 해당 pretraining model을 supervised task에 적용하는 것이었습니다."

 

위에서 설명한 학습 방법론들은 현재 굉장히 많은 분야에서 연구되고 있는데, 이번 글에서는 그 중 최초의 방식 'Greedy Layer-Wise Unsupervised Pretrainig'에 대해서 알아보려고 합니다. 

 

 

※Greedy Layer-wise unsupervised training 관련 논문은 아래 논문을 참고해주세요!

 

Yoshua Bengio, Pascal Lamblin, Dan Popovici, and Hugo Larochelle. Greedy layer-wise training of deep networks. In Bernhard Sch¨olkopf, John Platt, and Thomas Hoffman, editors, Advances in Neural Information Processing Systems 19 (NIPS'06), pages 153–160. MIT Press, 2007.

 

 

 

1. Greedy Layer-Wise Unsupervised Pretraining

Greedy Layer-Wise Unsupervised Pretraining 방식은 각 layer순차적으unsupervised learning 시키는 학습 방법론이라고 볼 수 있습니다. 어떤 특정 layer를 B layer라고 했을 때, B layer의 이전 layer output 값을 취하여 B layer가 new representation (or feature)를 출력할 수 있도록 도와주는 방식입니다. 

 

그림 출처: https://www.researchgate.net/figure/Unsupervised-greedy-layer-wise-training-procedure_fig4_308818792

 

예를 들어, 20×20 이미지 data (=400차원)최초의 정보(information)로 주어졌다고 가정해보겠습니다. 그리고, 첫 번째 layer를 거쳐서 나오는 neuron(=indepent vector) 300개(=300차원)라고 해보겠습니다. 최초의 정보인 400차원 데이터는 첫 번째 layer를 거쳐 가공된 300차원 feature(or representation)가 됩니다. 그리고, 첫 번째 layer를 거친 300차원 feature는 두 번째 layer 입장에서 보면 가공해야 할 또 다른 정보(=information)가 되는 것이죠. 어찌됐든, 첫 번째 layer의 최초의 정보(=400차원)와 두 번째 layer의 정보(=300차원)는 성격이 다르기 때문에, 이들을 가공해서 얻게 되는 output인 feature(or representation)도 layer 마다 성격이 다르다고 할 수 있습니다.  이러한 방식을 통해 각 layer 마다 고유의 representation을 갖게 되는 것이죠.  

 

 

Greedy Layer-Wise Unsupervised Pretraining 알고리즘은 아래와 같습니다.

  • L: Unsupervised learning algorithm → for 문에서 k가 하나씩 증가할 때, L 알고리즘을 통해 만들어진 \(f^{(k)}\)은 학습이 완료되었음을 가정 → L을 통해 학습한 각 layer는 고유의 representation을 갖고 있음 
    • 참고로 이 책에서는 unsupervised learning algorithm에 대한 구체적인 description은 없고, 여러 논문들을 reference 해놓기만 했습니다.
  • Identity function: f(x) = x → 입력값=출력값 
  • Function composition: \(g\)∘\(f\) = \(g(f(x))\)  → \(f^{(k)}\)∘\(f\) = \(f^{(k)}(f(x))\)
  • Y: target(labeled) data
  • X: input data 

※ f: fine-tuning if문에서의 f는 이전 for문에 의해 \(f^{k=m}(f(f....(f^{1}(X))....))\)를 의미한다.

 

 

앞서 이야기 했듯, 이전에는 FC layer 기반 (=jointly)의 DNN 모델을 처음부터 supervised task에 적용하는 것이 매우 힘들었지만, 위와 같은 학습 방법론 (=Greedy layer-wise Unsuperivsed pretraining)을 통해 DNN 모델을 supervised task에 적용할 수 있게 됐습니다.

 

Greedy layer-wise training procedures based on unsupervised criteria have long been used to sidestep the difficulty of jointly training the layers of a deep neural net for a supervised task.

 

 

1-1. "Greedy layer-wise unsupervised"

위의 알고리즘을 greedy layer-wise라고 부르는 이유를 간단히 설명해보겠습니다.

 

우리는 어떤 문제(=task) 해결하기 위해 알고리즘(=solution)을 고안합니다. 그런데, 세상에는 완벽한 해결책이라는게 존재하지 않죠. 그렇기 때문에 어떤 경우에는 굉장히 복잡한 task를 작은 문제들로 나누고, 이러한 작은 문제들을 해결해 나가면서 최종 task의 해를 구하기도 합니다. 보통 이러한 알고리즘 해결법을 Dynamic programming이라고 하죠. 반면, 복잡한 task를 작은 문제들로 나누지 못하는 경우에는 그때 그때 직면한 문제를 해결함으로써 최종 task의 해를 구해나가는데, 이 경우를 greedy algorithm이라고 합니다.

 

즉, Greedy algorithm은 각각에 직면 하는 단계들에서 solution을 구하는 (=each piece of the solution independently) 방법론이라고 할 수 있습니다.  'Greedy layer-wise unsupervised pretrining' 관점에서 보면 indepent pieces각각의 layer라고 볼 수 있겠네요. 여기서 indepent라고 표현한 이유는 두 번째 layer를 unsupervised 방식시켜도, 첫 번째 layer가 학습되지 않기 때문에 '학습의 관점'에서는 layer들이 indepent하다고 할 수 있습니다.

 

 

"The lower layers (which are trained first) are not adapted after the upper layers are introduced."

 

학습 시킬 때는 첫 번째 layer가 별로(=layer-wise) unsupervised learning 방식으로 학습을 시킵니다. 입력 값이 마주하는 layer 마다 독립적으로 unsupervised task를 진행합니다. 즉, 각 layer 마다의 독립적인 solution을 구하는 것인데, 바꿔말하면 각 layer에 해당하는 최소 loss값을 구할 수 있도록 학습시키는 것이 목적입니다.

 

그림 출처: https://www.researchgate.net/figure/Unsupervised-greedy-layer-wise-training-procedure_fig4_308818792

 

1-2. "Pretraining"

앞서 학습했던 "Greedy layer-wise Unsupervised" 방식으로 학습한 DNN은 결국 supervised task에 (fine-tuning 되어) 사용됩니다. 이러한 관점으로 봤을 때, 이전 Unsupervised 방식으로 학습된 DNN은 pretraining model이라고 볼 수 있죠.

 

즉, "Greedy layer-wise unsupervised pretraining model"은 supervised task 관점에서 보면, weight initialization 또는 regularizer (to prevent overfitting) 역할을 하게 되는 겁니다.

 

 

 

2. Greedy Layer-Wise Unsupervised Pretraining for Unsupervised learning

앞선 글에서는 "Greedy layer-wise unsupervised pretraining 모델"이 supervised task에 fine-tuning하기 위해 사용된다고 언급했지만, 사실 unsupervised task를 해결하기 위한 pretraining 모델로써도 사용이 됩니다. 정확히 어떻게 사용했는지는 아래 세 논문을 살펴보는 것을 추천합니다. 참고로 아래 세 가지 모델에 대한 자세한 설명은 Deeplearning book "Chapter 20. Deep Generative model"에서 다루는데,추후에 Chapter20에 대한 내용도 포스팅 하도록 하겠습니다.

 

  • Reducing the Dimensionality of Data with Neural Networks → deep autoencoder (by G. E. HINTON AND R. R. SALAKHUTDINOV; 2006)
  • A Fast Learning Algorithm For Deep Belief Nets → deep belief nets (by G. E. HINTON; 2006)
  • Deep Boltzmann Machines (by Salakhutdinov and Hinton, 2009a)

 

지금까지 Unsupervised learning 방식으로 pretraining 모델을 만드는 최초의 학습 방법론에 대해서 설명해보았습니다.

 

그럼 다음 글에서는 "Unsupervised learning 방식의 pretraining 모델을 언제 써야 하는지?"에 대한 내용을 다루어보도록 하겠습니다.

'Representation Learning' 카테고리의 다른 글

1. Representation Learning 이란?  (5) 2022.01.21

안녕하세요.

 

이번글에서는 representation learning이라는 개념에 대해서 설명하려고 합니다.

 

개인적으로 2021년 동안 논문을 살펴보면서 가장 눈에 많이 띄었던 용어representation learning 이었습니다. 예를들어, GAN, self-supervised learning, transfer learning, domain adaptation 관련 논문들에서 자주 봤던 것 같네요.

 

 

 

이렇듯, 최근 deep learning 모델들을 representation learning 관점에서 설명하고 해석하려는 경향이 많은 것 같아 이번글에서 representation learningdeep learning 간의 관계를 살펴보려고 합니다.

 

※해당 내용들은 아래 deep learning book을 참고 했음을 말씀드립니다.

 

 

https://www.deeplearningbook.org/contents/representation.html

 

https://www.deeplearningbook.org/contents/representation.html

 

www.deeplearningbook.org

 

그림 출처: https://dmitry.ai/t/topic/175>

 

 

 

1. Representation Learning이란?

※Representation learning에 대한 개념을 사전적으로 정의하기 전에 우선 몇 가지 예시들을 통해 representation에 대한 개념을 직관적으로 이해해보도록 해보겠습니다.

 

1-1. 일반적인 관점에서의 representation 

먼저, representation이란 개념을 일반적인 관점에서 살펴보겠습니다. 

 

 

"잠시 아래 이미지를 보고 5초 동안 생각해보세요!"

 

여러분은 위의 이미지를 보고 다음과 같은 생각을 하셨을 겁니다.

 

"음.. 나누기가 있네? "나누기"하란 뜻이구나!"

 

그런데, 여기서 문제가 발생합니다. '나누기'를 하려고 하는데 로마(숫)자 표기가 되어있죠. 로마자를 이용하여 나누기를 하는건 생각보다 어려운 문제입니다. 그래서 여러분은 무의식적으로 위의 로마자를 "0, 1, 2, ..., 9"와 같은 아라비아 숫자로 바꾸어 나누기를 하려고 할 것 입니다. 

 

"즉, 나누기를 하기 위해서는 아리비아 숫자로 표기하는 것이 좀 더 수월한 것이죠."

 

 

그럼, 지금까지 이야기 한 내용을 좀 더 자세히 설명해보겠습니다.

 

우리는 보통 어떤 task해결하기 위해서 task와 관련된 정보들을 이용합니다. 예를 들어, 나누기(=task)를 하려고 하면 "수(=numeric)"라는 정보를 이용하죠. 하지만, 이러한 "수(=numeric)"라는 정보들은 다양하게 표현(=representation)될 수 있습니다. 수를 표현하는 방법에는 '로마숫자표기(=Roman numerical representation)', '아라비아숫자표기(Arabic numerial representation)' 등이 있죠. 

 

 

보통 task들의 난이도정보들을 어떻게 표현(=representation)해주느냐에 따라서 결정이 됩니다. 즉, 정보들을 특정 task에 맞게 잘 표현(=representation)해주면 해당 task를 풀 수 있는 확률이 높아지는 것이죠.

 

예를들어, 우리가 수를 나눈다고 가정해보겠습니다. 이 때, 수(=numeric)라는 정보를 로마숫자(=Roman numerical representation)로 표현하면 어떻게 될까요? 다시 말해, "CCX÷VI"라는 문제(=task)가 주어주면 풀기가(=해결하기가) 매우 힘들 것 입니다. 하지만, 나누기라는 task를 "210÷6"과 같이 아라비아 숫자(=Arabic numerial representation)로 표현하면 금방 해결하실 수 있으실 겁니다. 왜냐하면 아라비아 숫자를 이용하면 'place-value system'을 이용할 수 있기 때문입니다.

 

“The Roman numeral system (I, II, III, IV,...) lacks an efficient way to represent place, and it makes simple arithmetic functions (<- ex: division) very difficult to perform for most people. So, we need a place-value system. A place-value system assigns a certain value to the spatial location of a number in a series.​”​

 

이미지 출처:https://www.splashlearn.com/math-vocabulary/place-value/place-value

 

 

(위에서 한 이야기를 아래와 같이 정리해볼 수 있겠네요!) 

 

 

이렇듯, 우리가 나누기를 할 때, 수(=numeric)라는 정보를 보통 아라비아 숫자로 가공(=processing)하여 표현(=representation)하게 됩니다.

 

 

 

또 다른 예시로는 알고리즘이 있습니다. (이 부분은 자료구조의 개념이 필요하기 때문에 구체적으로 이해가 안되시는 분들은 "linked list, binary tree search, 시간복잡도"와 관련된 개념들을 찾아 보시길 권유합니다. 시간이나면 이 개념들에 대한 글을 따로 리포팅 하도록 하겠습니다.)

 

우리에게 어떤 수들이 주어져있고, 이 수들은 이미 오름차순으로 정렬이 되어 있다고 가정해보겠습니다. 이 때, 우리에게 새로운 수 하나가 주어졌다고 했을 때, 그 수를 올바른 위치에 삽입하는데 필요한 시간 복잡도가 어떻게 될까요? 이에 대한 답은 아래와 같습니다.

 

"정렬된 수 들을 어떻게 표현(=representation)해주느냐에 따라 다릅니다!"

 

자료구조에서는 정렬된 수 들을 아래와 같이 두 가지 형태 (=linked list, binary tree) 형태표현할 수 있습니다.

 

그림출처:https://www.geeksforgeeks.org/given-linked-list-representation-of-complete-tree-convert-it-to-linked-representation/

 

(참고로 교재에서 설명하는 red-black tree는 binary search tree의 일종인 self-balancing binary search tree라고 하는데, 이에 대한 자세한 설명은 생략하고 red-black tree를 binary search tree로만 표현하여 설명하도록 하겠습니다.)

 

 

(↓↓↓ Linked List 에 대한 시간복잡도 설명 ↓↓↓) 

https://yongkis.tistory.com/22

 

자료 구조에 따른 시간 복잡도 비교 - linked list편

오늘은 지난 배열편에 이어 linked list(연결 리스트)라고 불리는 자료구조에 대해서 시간 복잡도와 연관해서 분석해보고, 현실에서 어떤 것과 닮아있는지를 통해서 심화학습 해보도록 하겠습니다

yongkis.tistory.com

 

 

 

(↓↓↓ Binary Search Tree에 대한 시간복잡도 설명 ↓↓↓) 

https://en.wikipedia.org/wiki/Red%E2%80%93black_tree

 

Red–black tree - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Self-balancing binary search tree data structure In computer science, a red–black tree is a kind of self-balancing binary search tree. Each node stores an extra bit representing "col

en.wikipedia.org

 

 

결국 우리에게 주어진 수를 어떠한 자료구조 형태 (ex: linked list or binary search tree)표현(=representation)하느냐에 따라서 "정렬된 수에 특정 수를 삽입(=insert)"하는 task의 시간복잡도(=난이도)가 결정됩니다.

 

이미지 출처:https://callmedevmomo.medium.com/%EC%9B%B9-%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-01-%EB%B9%85%EC%98%A4-%ED%91%9C%EA%B8%B0%EB%B2%95-ff369f0efc1d

 

지금까지 이야기한 내용들을 함축적으로 정리하면 아래와 같습니다.

 

"결국 우리는 어떤 task를 해결할 때, 정보(=information)를 어떻게 가공(processing)하여 표현(=representation)해줄지에 따라서 task의 난이도가 결정이 된다."

 

(↓↓↓ Deep learning book 본문 내용↓↓↓)

"Many information processing tasks can be very easy or very difficult depending on how the information is represented."

 

그렇다면 어떻게  딥러닝 모델에서 representation이란 개념은 어떻게 이해해야 할까요?

 

 

 

 

2. 딥러닝 관점에서의 representation 이란? (by Supervised learning 관점)

2-1. What is representation in supervised training of feedforward networks?​

먼저, Deep Neural Network (DNN) 를 살펴보겠습니다. 우리가 DNN을 사용하는 이유중 하나는 non-linear problem을 linear classifier로 풀수 있기 때문입니다.  (자세한 설명은 아래 글을 참고해주세요!)

 

https://89douner.tistory.com/23?category=868069 

 

5.Multi-Layer Perceptron (MLP), Universal Theorem

Q. 왜 단층 Perceptron 모델에서 Layer를 추가하게 되었나요? Q. Universal Approximation Theorem은 뭔가요? 2~4장까지 배웠던 부분을 아래와 같이 하나의 그림으로 요약을 할 수 있습니다. 1.입력값들이 가중치.

89douner.tistory.com

 

 

여기서의 tasklinear classifier를 이용한 classification task입니다. 그리고, 최초의 정보(information)라고 할 수 있는 DNN의 input 값들(=다양한 독립변수들: x1, x2, ..., xn)을 neural network로 가공(=processing)하여 'learned h space'로 표현(=representation)해 줍니다.

 

 

즉", 최초의 input 값들을 linear classifier가 올바르게 classification 할 수 있도록 'learned h space'로 표현(=representation)해준 것이죠."

 

 

 

2-2. What is representation in supervised training of feedforward networks?​

이미지CNN으로 분류하는 문제도 동일하게 생각해 볼 수 있습니다. Supervised learning 기반의 이미지 분류에서도 흔히 softmax (linear classifier)이용최종 분류를 하게 됩니다. (Softmax가 왜 linear classifier인지는 뒤에서 설명하도록 하겠습니다)

 

"즉, 이미지를 linear classifier로 classification 하려는 task인 셈이죠."

 

그런데, 일반적으로 DNN(=Deep Neural Network) 구조는 이미지 분류 성능이 좋지 않다고 알려져 있습니다 (자세한 설명은 아래 글을 참고해주세요!)

 

https://89douner.tistory.com/58?category=873854 

 

4. CNN은 왜 이미지영역에서 두각을 나타나게 된건가요?

안녕하세요~ 이번 시간에는 DNN의 단점을 바탕으로 CNN이 왜 이미지 영역에서 더 좋은 성과를 보여주는지 말씀드릴거에요~ 1) Weight(가중치) parameter 감소 (가중치 parameter가 많으면 안되는 이유를 참

89douner.tistory.com

 

앞서 "DNN 구조는 이미지 분류 성능이 좋지 않다"고 언급한 부분은 아래와 같이 다르게 해석해 볼 수 있습니다.

 

"DNN 구조는 (linear classifier를 이용한) 이미지 분류 task를 하기 위해 최초의 정보들을 부적절하게 표현(=representation) 해준다"

 

그래서, DNN과 다르게 visual feature들을 잘 뽑아(or 표현해) 낼 수 있는 Convolutional Neural Network (CNN)가 도입이 되게 됩니다. CNN은 convolutional filter를 이용한 feature extractor를 갖는 데, 이러한 feature extractor 덕분에 softmax linear classifier가 이미지를 잘 classification 해줄 수 있도록 최초 정보(=input 이미지)를 가공(=processing)하여 표현(=representation) 해주게 되는 것이죠.

 

"CNN achieves good representation for image classification using softmax linear classifier"

 

 

 

Input feature(=원본 이미지)CNN에 입력되면 다양한 conv layer에 의해 hierarchical feature map들이 얻어집니다. Task에 따라 feature extractor를 거쳐 얻은 최종 feature(=feature classifier에 입력되기 직전)의 표현(=representation)들이 달라질 것입니다. 예를 들어, classification task이면 classification에 맞는 최종 feature가 representation 될 것이고, segmentation task이면 segmentation에 맞는 최종 feature가 representation이 될 것 입니다. 

 

책에서는 subsequent learning task라고 언급하는 부분이 있는데, 이것이 최종 task의 종류들(=ex: classification task, segmentation task, linear clasifier task, etc...) 을 의미하는 듯 합니다.

 

"Generally speaking, a good representation is one that makes a subsequent learning task easier. The choice of representation will usually depend on the choice of the subsequent learning task."

 

&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;이미지 출처: https://www.researchgate.net/figure/Learning-hierarchy-of-visual-features-in-CNN-architecture_fig1_281607765&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;

 

결국 DNN, CNN 모두 최종 task의 유형에 따라 'new representation'에 해당하는 new feature(<--> input feature)를 출력하게 됩니다. 이러한 'new representation'을 뽑게 학습하는 것을 representation learning이라고 부르는 것이죠.

 

이미지 출처:https://srdas.github.io/DLBook/NNDeepLearning.html

 

좀 더 구체적인 예시를 들어보겠습니다.

 

먼저, 우리가 24×24 이미지를 갖고 네 가지 클래스분류한다고 해보겠습니다.

  1. Blue Square
  2. Blue Circle
  3. Red Square
  4. Red Circle

 

이 때, 576(=24×24)개입력 feature로 부터 뽑을 수 있는 가장 이상적인 (hidden) feature vector (=indepent vectors)를 뽑으라고 한다면, 아래와 같이 'color', 'shape' 2차원 (hidden) feature vector가 될 것 입니다. 그리고 이러한 feature vector를 'new representation'으로 볼 수 있겠네요.

 

"하지만, 'new representation'을 추출하는 network(=모델)가 무엇이냐에 따라서 달라집니다."

 

아래 왼쪽 이미지에서 'entangled space'DNN을 이용하여 얻은 (hidden) feature vector들이라고 가정한다면, DNN으로는 'blue circles'를 linear classifier로 구분하기 힘듭니다. 반대로, 오른쪽 'disentangled space'CNN을 통해 얻은 (hiddent) feature vector들이라고 한다면, 4가지 클래스 모두 linear classifier로 충분히 분류할 수 있게 됩니다.

 

이미지 출처:&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;https://arxiv.org/abs/2007.06356

 

"즉, CNN은 이미지를 linear clasifier로 잘 분류할 수 있도록 (hidden) feature vector를 잘 representation 해주는 것이죠."

 

지금까지 설명한 내용을 종합하자면 결국 아래와 같이 정리해 볼 수 있겠네요.

 

결국 딥러닝 모델 성능은 "특정 task에 해당하는 최종 feature(=원본 데이터(=information)에서 가공된 데이터)들을 얼마나 잘 representation 해주느냐"에 따라 달려있다. 

 

보통, feature learning, feature representation learning, representation learning 이라는 단어들이 자주 혼용되서 사용되는데, 위에서 언급한 바를 생각해보시면 어떠한 이유로 해당 용어를 혼용해서 사용했는지 조금은 파악하실 수 있으실 거라 생각됩니다.

 

 

[Q. Softmax가 왜 linear classifier인가요?]

위의 질문에 답을 하기전에 먼저 아래의 질문에 답을 해보도록 하겠습니다.

 

'Q. logistic regression'이 어떻게 linear classifier가 될 수 있는가?'

 

우리는 logistic regression아래 그림으로 나타낼 수 있습니다.

 

우리에게 X라는 input 데이터가 주어 졌을 때, Y가 0 또는 1을 구분 짓는 binary classification을 한다고 가정해보겠습니다. X가 주어졌을 때 Y가 0이 될 확률을 "P(Y=0|X)"와 같이 표현할 수 있고, 이것을 sigmoid function을 이용해 구체적인 (확률) 값으로 표현한다면 아래 이미지의 수식을 이용하게 됩니다. 또한, 'binary clasfication'이기 때문에 P(Y=1|X)인 경우의 확률 값을 "1-P(Y=0|X)"라고 표현 할 수 있게 되죠.

 

 

 

Binary classification 문제는 P(Y=1|X), P(Y=0|X) 둘 중 어느 확률이 더 큰지에 따라서 최종 output 값(=Y)을 1로 classification 할 것인지, 0으로 classification 할 것인지 결정합니다. 그리고 이것을 아래와 같이 정리해볼 수 있죠.

 

위의 수식을 통해 우리는 아래와 같이 정리해볼 수 있습니다.

 

"logistic regression이 linear method라고 불리는 이유는 linear한 계산을 통해 풀 수 있는 문제여서가 아니라, logistic regression을 결정짓는 decision boundary가 여전히 linear하기 때문인 것이다."

 

(↓↓↓ logistic classifier가 linear classfier라는 설명을 참고한 링크 ↓↓↓)

https://homes.cs.washington.edu/~marcotcr/blog/linear-classifiers/

 

Is Logistic Regression a linear classifier?

A linear classifier is one where a hyperplane is formed by taking a linear combination of the features, such that one 'side' of the hyperplane predicts one class and the other 'side' predicts the other.

homes.cs.washington.edu

 

 

Softmax를 이용한 classification도 똑같은 맥락에서 linear classifier라고 할 수 있습니다. 

 

 

우리가 왜 softmax'multinomial logistic regression'으로 부르는지 이해해보면 좀 더 구체적으로 이해하실 수 있으실거라 생각됩니다.

 

"Softmax is known as multinomial logistic regression"

 

 

(↓↓↓multinomial logistic regression == softmax↓↓↓)

https://srdas.github.io/DLBook/LinearLearningModels.html#multiclass-logistic-regression

 

Deep Learning

This is an introduction to deep learning.

srdas.github.io

 

 

 

3. Unsupervised learning 관점에서 representation (learning) 이란?

앞서 설명한  supervised learning 기반의 representation (learning)에 대한 연구도 이루어지고 있지만, 오늘날 주로 연구되는 분야는 unsupervied learning 방식으로 하는 representation learning 입니다. Deeplearning book의 " Chapter 15. Representation Learning" 역시 대부분 unsupervised learning 방식의 representation learning에 대해서 이야기하고 있습니다. 이에 대한 자세한 설명은 다음 포스팅에서 하도록 하겠고, 여기에서는 추상적인 이유에 대해서만 말씀드리도록 하겠습니다.

 

앞서 supervised learning 관점에서 representation을 해석해 봤다면, 이번에는 unsupervised learning 관점에서 representation이 (supervised learning 관점에서의 representation과) 어떻게 다르게 설명될 수 있는지 살펴보겠습니다.

 

Unsupervised learning은 쉽게 말해 unlabelded dataset을 이용한 학습 방식입니다. 물론, unsupervised learningobjective(=loss) function이 있기 때문에 그 나름대로의 representation을 학습하게 됩니다.

 

이미지 출처:https://srdas.github.io/DLBook/NNDeepLearning.html

 

Unsupervised learning에서도 new representation에 해당하는 hidden feature vector를 구할 수 있습니다. 그런데, 우리는 이러한 representation을 명시적(explicit)으로 설정(=design)할 수 있습니다. 즉, hidden feature vector들이 어떠한 density function(→ 뒤에서 더 자세히 설명)을 따를거라고 명시적으로 표현(=representation)해 줄 수 있죠 (물론 이론이 아닌 '현실세계'에서는 굉장히 어려운 문제이지만요!).

 

예를 들어, VAE (=Variational Auto-Encoder) 같은 경우에도 hidden feature vector (= latent vector)normal distribution을 따를 것이라고 명시적으로 가정합니다. 이러한 내용을 Deeplearning book에서는 일반화하여 아래와 같이 표현합니다. 

 

"Other kinds of representation learning algorithms are often explicitly designed to shape the representation in some particular way. (->VAE같은 representation learning 알고리즘은 representation에 해당하는 feature vector가 명시적(=explicit)으로 normal distribution을 따르겠금(=shape) 고안된다)"

  

이미지 출처:&amp;amp;amp;amp;amp;amp;nbsp;https://learnopencv.com/variational-autoencoder-in-tensorflow/

 

앞서 설명한 개념들 중에 density estimation explicit 이란 단어를 좀 더 설명해보도록 하겠습니다.

 

 

Q. Density estimation이 뭔가요?

여행을 하다가 지역 주민에게 아래와 같은 질문을 했다고 가정해보겠습니다.

 

"여기 육교 아래로 지나가는 차는 하루에 몇 대나 인가요?"

그림출처:https://twitter.com/cjndrama/status/1248857284177874944

 

위의 질문에 대한 지역 주민들의 답은 아래와 같이 굉장히 다양할 것입니다. 

  • 주민1: 어제 봤더니 300대 인거 같던데?
  • 주민2: 일주일 전에 봤더니 500대 인거 같던데?

 

위의 답을 통해 우리는 아래와 같은 사실들을 알 수 있습니다.

  • 차가 하루에 몇 대가 지나갈지는 정해지지 않음 
    • 즉, 차가 하루에 100 대 지나간다는 건 매일 어김없이 100대가 지나간다는 '절대진리'와 같음 ​
    • 어떤 질문에 대해 상수로 답변하는 것은 절대 진리 이야기 하는 것과 같음
  • 그러므로, '하루(일일) 교통량'을 상수 개념이 아닌 변수 개념으로 봐야 함
  • (사회 or 자연)현상과 관련된 개념들은 '변수' 개념들로 봐야하는 경우가 대부분
    • 위와 같은 '변수' 성격을 띄는 '(사회 or 자연)현상'과 같은 질문들에 대해, 그럴듯한 답을 하기 위해선 ‘확률’이 필요
    • 즉, 다수의 관측 결과를 기반으로 어떠한 현상을 확률적으로 설명해야 함
    • 이 때, 필요한 개념이 '​Probability (Density) Distribution​'

 

 

(↓↓↓ 스마트폰 수명과 exponential probability distribution 간의 관계↓↓↓)

https://math100.tistory.com/36​ 

 

지수분포 문제풀이

이전 글에서 지수분포는 시간이 지날수록 확률이 점점 작아지는 경우에 사용한다고 했었는데, 지수분포는 “이하일 확률”과 “이상일 확률”을 구하는 공식이 서로 다르다. 그래서 문제를 풀

math100.tistory.com

 

위와 같이 다양한 현상들을 확률적으로 표현해주는 probability distribution이 존재합니다.

이미지 출처:&amp;amp;amp;amp;amp;nbsp;https://destrudo.tistory.com/16

 

앞에 설명한 내용을  다시 정리해보겠습니다.

관측 데이터가 한달, 두 달, 1년 넘게 쌓이게 되면 우리는 '일일 교통량'이란 변수가 어떤 (확률분포) 특성을 갖는지 좀더 정확히 파악할 수 있게 됩니다. 

 

우리는 여기서 '변수'와 '데이터(=관측 값)'에 대한 관계를 정의해볼 수 있습니다.

 

어떤 변수가 가질 수 있는 다양한 가능성 중의 하나가 현실 세계에 구체화된 값을 데이터라고 부릅니다. 즉, 데이터는 변수의 일면에 불과한 것이죠.

 

 

“우리는 이렇게 관측된 데이터들을 통해 그 변수(random variable)가 가지고 있는 본질적인 특성을 probability density distribution으로 설명 또는 추정(estimate)하려고 하는데, 이를 'density estimation (밀도추정)' 이라고 합니다”

 

 

(↓↓↓ Density estimation에 대한 글을 참고한 사이트 ↓↓↓)

https://darkpgmr.tistory.com/147

 

Kernel Density Estimation(커널밀도추정)에 대한 이해

얼마전 한 친구가 KDE라는 용어를 사용하기에 KDE가 뭐냐고 물어보니 Kernel Density Estimation이라 한다. 순간, Kernel Density Estimation이 뭐지? 하는 의구심이 생겨서 그 친구에게 물어보니 자기도 잘 모른.

darkpgmr.tistory.com

 

 

 

 

Q. Density estimation과 explicit은 어떤 관계인가요?

앞서 배운 density estimation 가지 종류로 나뉩니다.

 

(이 글에서는 explicit에 대한 개념을 설명하는 것이 목적이므로 parametric density estimation에 대해서만 설명하겠습니다)

 

"Parametric density estimation은 변수(=random variable)이 특정 PDF(=Probability Density Function)를 따를 것이라 가정합니다."

 

즉, PDF에 대한 확률모델 (=probability density distribution)을 정해 놓고 모델의 파라미터만 추정하는 방식이죠. (참고로 여기서 말하는 parameter는 딥러닝에서 말하는 weight와 다릅니다!)

 

앞서 예를 들었던, VAE를 통해서 설명하자면 다음과 같습니다.

  • Latent vector (Z space)가 normal distribution을 따를 것이라 가정 ← a.k.a prior distribution​
  • Z latent vector의 mean, std만 구하면 Z space를 설명할 수 있음​

이미지 출처:&amp;amp;amp;amp;amp;nbsp;https://davideliu.com/2019/11/08/variational-autoencoder/

 

이미지 출처:https://www.jeremyjordan.me/variational-autoencoders/

 

 

(↓↓↓ VAE에 대한 설명을 참조한 글 ↓↓↓)

https://www.jeremyjordan.me/variational-autoencoders/

 

Variational autoencoders.

In my introductory post on autoencoders, I discussed various models (undercomplete, sparse, denoising, contractive) which take data as input and discover some latent state representation of that data. More specifically, our input data is converted into an

www.jeremyjordan.me

 

 

 

CS231 수업에서도 generative model을 아래와 같이 구분하고 있는데, VAE와 같은 모델을 explicit density estimation으로 보고 있고, 이것을 통해 'parametric=explicit' 관계로 해석했습니다 (이와 같은 해석은 저의 주관적 해석이니 다른 의견이 있으신 분들은 댓글 달아주시면 감사하겠습니다!).

 

Deeplearning book에서는 "Supervised training of feedforward networks does not involve explicitly imposing any condition on the learned intermediate features."와 같은 표현을 합니다. 이 문장을 개인적으로 해석하면 아래와 같다고 생각합니다.

  • any condition: probability density function
  • learned intermediate features: pre-trained model의 feature들 ← DCGAN에서 pre-trained model의 feature들을 intermediate features라고 묘사하고 있음
  • does not involve explicitly imposing any condition on the learned intermediate features. ← Supervised learning으로 이미 학습된 feature들은 어떤 PDF를 따를거라고 명시적(=explicit)으로 지정되지 않음

 

앞서 언급한 latent vector들이 (dependent vector들을 포함하기 보다) independent vector들을 더 많이 포함할 수 록 좀 더 고차원 데이터를 쉽게 표현해 줄 수 있습니다. 예를 들어, 사람 얼굴을 4개의 latent vector들로 표현한다고 했을 때, "x1=얼굴색, x2=인종, x3=머리색, x4=수염" 이렇게 표현하면 x1과 x2는 어느 정도 종속관계 (dependent) 이기 때문에 (상대적으로) 표현력이 떨어지게 되지만, 반대로 "x1=인종, x2=수염, x3=머리색, x4=안경여부" 이렇게 표현한다면 더 많은 사람들의 얼굴을 잘 표현할 수 있을 것입니다. 

이미지 출처:&amp;amp;amp;amp;amp;nbsp;https://www.jeremyjordan.me/variational-autoencoders/

 

"그래서, latent vector들이 최대한 independent 하도록 objective(=loss) function을 설계하는 것이 핵심 포인트가 됩니다."

 

 

 

4. Multi-task learning 그리고 shared internal representation

우리에게 굉장히 적은 데이터들이 주어졌을 때, supervised learning을 적용한다면 흔히 overfitting 문제가 발생할 것입니다. 예를 들어, 우리에게 아래와 같은 Chest X-Ray 폐렴 데이터만 갖고 있다고 해보겠습니다. 

 

이미지 출처:https://www.openaccessjournals.com/articles/advanced-neural-network-solution-for-detection-of-lung-pathology-and-foreign-body-on-chest-plain-radiographs-13104.html
그림 출처:https://www.openaccessjournals.com/articles/advanced-neural-network-solution-for-detection-of-lung-pathology-and-foreign-body-on-chest-plain-radiographs-13104.html

 

의사들이 보는 폐렴 증상은 분명 폐주위의 섬유화에 주목하겠지만, 딥러닝의 경우는 CAM(=Class Activation Map)을 통해 살펴보면 엉뚱한데주목하는 경향이 있습니다. 아래와 같이 엉뚱한 곳을 보는 이유폐렴 관련 데이터는 저런 부분들만 살펴봐도 분류가 가능했기 때문일 수 있습니다. 즉, 정답의 이유는 상관없이 "학습 데이터의 정답만 맞추면 된다"는 식인 것이죠.

 

 

하지만, 저런 artifacts와 같은 요소들이 없는 폐렴 데이터가 들어오면 곧 바로 틀려버립니다. 즉, supervsied learning 방식을 사용한 CNN적은 수 의 폐렴 데이터로 학습하게 되면, 폐렴 CXR 이미지를 제대로 representation 해줄 수 없게 된다고 이야기 할 수 있습니다.

 

또 다른 예시로는 한 병원의 의료 이미지 데이터만 사용하여 학습시킨 딥러닝 모델을 다른 병원의 의료 이미지 데이터로 테스트 하려고 하면 잘 안되는 경우가 있습니다. 여기서 생각해 볼 수 있는 부분은 해당 딥러닝이 특정 병원에서 생산되는 기기의 noise학습해버렸다거나, 기기의 contrast를 고유하게 학습했을 경우 다른 병원의 noise, contrast가 들어오면 기존 예측방식에 큰 혼란을 줄 수 있겠죠 (물론 data augmentation을 이용하여 이러한 문제를 조금 해결할 수 있겠으나, 우리가 모르는 해당 병원의 고유의 변수들을 모두 커버할 순 없겠죠).

 

결과적으로, 적은 수의 데이터를 이용하여 supervised learning을 적용하면 unseen data (=training data에 포함되지 않은 데이터) 를 잘 예측하지 못하게 됩니다. 이를 보통 sensitive 하게 반응한다고 하죠. 그렇다면, 우리는 unseen data에도 robust하게 작동할 수 있는 딥러닝 모델만들어야 합니다.

 

만약 우리가 방대한 unlabeled data를 이용하여 이미지를 잘 representation 해 줄 수 있는 딥러닝 모델을 만든다면, 이러한 딥러닝 모델을 pretrained model로써 활용할 수 있을 겁니다. 즉, 최종 supervised task에 unlabeled data으로 학습시킨 pretrained model을 적용해도 좋은 '일반화 성능'을 얻을 수 있게 되는 것이죠.

 

"Training with supervised learning techniques on the labeled subset often results in severe overfitting. Semi-supervised learning offers the chance to resolve this overfitting problem by also learning from the unlabeled data. Specifically, we can learn good representations for the unlabeled data, and then use these representations to solve the supervised learning task."

 

또한 우리는 unlabeled data를 이용한 unsupervised learning 방식supervised learning 방식섞은 semi-supervised learning 방식을 이용할 수도 있습니다.

 

"즉, unsupervised learning 방식의 internal representation와 supervised learning 방식의 internal representation을 공유(share)할 수도 있는 것이죠."

 

출처: UnderstandandLeveragetheInternalRepresentationsof ConvolutionalNeuralNetworks (by Bolei Zhou; MIT)

 

(↓↓↓internal representation 에 대한 개념 이해 시 참고한 사이트 ↓↓↓)

https://aman.ai/cs231n/visualization/#visualizing-internal-representationsactivations

 

Aman's AI Journal • CS231n • Visualizing and Understanding

Review: Computer Vision Tasks We’ve talked about architectural design in the context of convolutional neural networks. We’ve primarily studied this within the purview of image classification. In the last couple of topics, we’ve been looking at the ot

aman.ai

 

 

 

Representation에 영향을 미치는 세 가지 요소는 아래와 같다고 할 수 있습니다.

 

  1. Input data
    • input data를 적절히 preprocessing 해주는 것에 따라서 적절한 new representation(or hidden feature vector)을 구할 수 있음
    • 최근 data에 기반한 data-centric research가 많이 주목 받고 있음
  2. Model
    • 보통 딥러닝 연구에서는 모델링 중심 (=model centric) 연구가 주(=main)를 이룸
    • Deep Learning
      • DNN, CNN, ViT, etc ...
    • Machine Learning
      • K-means, KNN (K-Nearest Neighbor), etc ...
  3. Task Type
    • Supervised Learning 방식
    • Semi-supervised learning 방식
    • Unsupervised Learning 방식
      • self-supervised learning
        • contrastive learning
      • GAN Inversion

 

 

 

지금까지 "representation learning"에 대한 개념을 살펴보았습니다.

 

다음글에서는 unsupervised learning 방식으로 학습시킨 representation model (=pretrained model) 을 어떻게 supervised task에 적용해서 사용했는지 그 사례에 대해서 살펴보도록 하겠습니다.

'Representation Learning' 카테고리의 다른 글

2. Unsupervised pretraining (Greedy Layer-Wise)  (6) 2022.01.24

안녕하세요.

이번 글에서는 Machine Learning Operations 의 약자인 MLOps라는 개념에 대해 다루어보려고 합니다.

 

글의 전개 순서는 아래와 같습니다.

 

  1. MLOps란? 
    • Design
    • Model development
    • Operations
  2. 머신러닝 or 딥러닝 연구자들이 MLOps에 관심 갖어야 하는 이유 (Feat. Model development)
  3. AutoML

 

[Note]

보통 MLOps라고 표현은 하긴 하지만, 딥러닝 역시 ML에 포함되기 때문에 DLOps라는 개념으로도 이해하셔도 좋을 것 같습니다.

 

 

 

 

 

 

1. MLOps란? 

Machine Learning (or Deep learning) 기반의 프로젝트를 시작한다고 하면 크게 세 가지 단계로 나눌 수 있습니다.

 

  1. Design
    • 산업에서 요구하는 바를 기준으로 문제를 정의합니다.
    • 예를 들어, 어떠한 데이터가 필요한지, 어떠한 딥러닝 기술이 중요하게 적용되면 좋은지 등을 의논합니다.
  2. Model Development
    • 우리가 design한 실험을 수행하기 위한 개발단계입니다.
    • 산업에서 사용할 수 있도록 제품의 안정성을 충분히 검증(verifying) 해야 합니다.
    • 그러기 위해서는 굉장히 다양한 실험을 수행해야 하죠.
  3. Operations
    • 이렇게 개발한 모델을 최종 사용자에게 서비스 하기 위한 단계입니다.
    • 우리가 만든 모델을 어느 곳에 배포할 지 (ex: 웹, 핸드폰, 컴퓨터 등) 에 따라서 배포방식이 달라집니다.
    • 제공된 제품을 지속적으로 모니터링(관리)해야 합니다.

 

<출처: https://ml-ops.org/content/mlops-principles>

 

보통 business라는 영역에 제한하여 MLOps라는 개념을 사용하고는 있지만, 제 개인적인 생각으로는 대학원 연구자들 또한 MLOps에 주목해야 한다고 생각합니다. 지금부터 그 이유에 대해 간단히 설명해보겠습니다. 

 

 

 

 

1-1. Design (Feat. 계획)

병원에서 의료인공지능을 하시는 분들의 가장 큰 장점은 design 단계가 훌륭하다는 점입니다.  아무리 IT 업계에서 의료인공지능을 한다고 해도, 의사분들이 "그건 의학적으로 의미가 없습니다"라고 말한다면 모든 프로젝트가 물거품이 될 가능성이 높지요.

 

Model development, Operations 단계에서 실패하는 것 보다 Design 단계에서 실패할 때 더 많은 시간과 비용을 손해보게 되기 때문에, Design 설계는 ML 프로젝트에서 매우 중요한 일입니다.

 

병원에서 딥러닝연구하시는 분들이 높은 IF를 갖는 저널에 논문을 내는 이유는 그만큼 design이 훌륭하기 때문입니다. 개인적으로 "딥러닝이 사용되면 의사들의 역할이 없어 질 것이다"라는 말에 동의하지 못하는 이유가  여기에 있기도 합니다. 오히려, design이 잘 되지 않는 딥러닝 연구가 많아 질 수 록 딥러닝 or 기계학습 버블이 생겨날 것인데, 이러한 버블을 걷어내는 역할을 의사분들이 하실 수 도 있겠죠. 

 

 

 

사실 이렇게 design을 하는 영역은 학계의 역할이라고 할 수 있습니다. 보통 학계는 오랫동안 domain knowledge를 쌓았기 때문에 어떠한 연구가 유의미한 것인지 판단할 수 있죠. 그리고, 매일 현재 기술들이 갖는 문제를 제기하고 이를 해결하기 위해 연구하기 때문에 최신 기법 솔루션들은 대부분 학계로부터 나온다고 볼 수 있습니다. 또한, 어떤 데이터를 이용하면 좋은지 알고 있으며, 특히 병원 같은 곳에서는 자체 의료 데이터를 갖고 있기 때문에 design 측면에서 제약사항이 상대적으로 작다고 할 수 있죠.

 

구글, 페이스북, 애플, 마이크로소프트, 엔비디아 등 같은 회사들이 딥러닝에서 좋은 결과를 도출할 수 있었던 것도 모두 학계로부터 도움을 받았기 때문입니다.

 

 

 

 

1-2. Model development

앞서 실험을 design 했으면 이를 실제로 실현(실험)해야 하는 단계를 거쳐야 합니다.

 

우리가 흔히 머리속에 그리는 실험관찰하는 방법입니다. 실험군 대조군을 설정하고 실험장비를 이용하여 지속관찰하면서 상태기록하죠.

 

하지만, machine learning (or deep learning)은 대부분 컴퓨터(Turing machine)에 기반하여 연구를 진행합니다. 그래서, 실험을 design 하기 위해 필요한 이론적 지식 외에도 컴퓨터를 잘 다룰 수 있는 능력이 필요하죠.

 

예를 들어보겠습니다. Design 한대로 실험을 하기 위해서는 우선 데이터부터 모아야 할 것입니다. 딥러닝에서는 레이블이 되어있는 데이터를 사용해야하는 경우가 많기 때문에 labelling 프로그램 tool을 잘 사용할 줄 아는 것이 중요합니다.  만약 데이터가 방대하면 분산처리 시스템 (ex: Hadoop, Spark 등) 등을 지원해주는 tool도 잘 활용할 줄 알아야 합니다.

 

"하지만, 보통 model development 단계에서는 Data를 수집하고 관리하는 단계보다는 아래 그림처럼 model dvelopment, training, devaluation을 하기 위한 별도의 tool들을 사용합니다."

 

 

Model development 단계에서 가장 볼 수 있는 것은 frameworks 입니다. 딥러닝 모델을 개발하기 위해서는 딥러닝 라이브러리를 지원해주는 framework를 선택해야 합니다. 예전에는 caffe, theano, keras 등이 사용되었지만, 현재pytorch, tensorflow로 통합되고 있습니다. (물론 최근에 keras가 tensorflow로부터 독립하긴했지만....)  최근에는 Fast.ai, pytorch lighting 등 좀 더 간편하게 사용하기 위해 제공되는 framework들이 각광을 받고 있습니다. 

 

또한, 딥러닝은 혼자서 개발하는 것보다 협업하여 개발하는 것이 훨씬 효율적입니다. 그렇기 때문에 최대한 이러한 협업지원해주는 software를 잘 사용할 줄 아는 것이 중요합니다. 예를 들어, Github과 같은 software는 여러 사람이 같이 협업할 때 필요한 기능들(ex: 버전관리 기능)을 다수 제공하고 있습니다. 또한, VScode 같이 좋은 기능이 많이 담긴 IDE를 사용하게 되면 github 연동, interactive mode 기능 등을 잘 사용할 수 있기 때문에 개발이 빨라질 수 있습니다.

 

딥러닝 연구에서 구글, 페이스북, 엔비디아 같은 회사의 리서쳐들이 좋은 성과를 낼 수 있는 이유는 자원최대한 잘 활용할 수 있기 때문입니다. Docker, Kubeflow 같은 resource management tool을 이용하면서 자원 관리를 하고, horovod 분산처리 시스템 또는 Mixed precision과 같은 기술 등을 이용하여 자원을 최대한 활용할 수 있도록 하기 때문에 실험을 빠르고 효율적으로 진행할 수 있었죠. 

 

또한 딥러닝 실험들을 관리해주는 weight&biases 와 같은 tool을 이용할 수 있으면 다양한 hyper-parameter들을 automatic하게 search 해줄 수 있으며, 실험 결과들을 매우 용이하게 비교 분석할 수 있게 되죠 (Experiment Management).

 

"이론적인 design을 하는 것도 매우 중요하지만 이를 구현하고 실험할 수 있는 능력은 또 다른 문제일 수 있습니다. 머리속으로 상상하는 것과 그것을 실현시키는 것이 다른 문제인것 처럼요."

 

 

 

1-3. Operations

MLOps마지막 단계라고 할 수 있는 것은 해당 모델 배포하고 운영하는 단계입니다.

자신의 딥러닝 또는 머신러닝 모델을 웹에 배포할지, 핸드폰 같은 곳에 배포할 지에 따라서  배포 방식다양합니다.

 

보통 배포 및 운영과 관련된 이슈들은 딥러닝 학계에서 주로 신경쓰고 있는 분야는 아닙니다. 주로 computer engineering 분야에서 다루어지는 문제들이죠.  

 

하지만, 최근에는 학계에서도 조차 자신들이 만든 모델상용화시키기 위한 노력들을 하고 있습니다. 즉, 딥러닝이 단순히 학문적인 연구에 머무르는 것이 아니라, 자신들이 연구하고 개발한 딥러닝 모델이 어떻게 실세계에 영향을 미치는지 보고 싶은 것이죠. 결국 이를 위해서는 deployment관련지식들도 습득할 필요가 있습니다. 예를 들어, microsoftonnx를 다룰 줄 안다면 배포를 좀 더 쉬운 방법으로 할 수 있겠죠.

 

 

 

 

본래 MLOps라는 개념은 아래 논문에서 처음 출현했다고 합니다. 딥러닝을 연구하다보면 딥러닝 학계의 연구들이 굉장히 많은 기여를 하고 있다고 생각합니다. 물론, 딥러닝 기술을 리딩하는 건 학계에서 출발하는게 대부분이죠. 하지만, ML(or DL) system 관점에서 봤을 때, 딥러닝 모델을 연구를 하고 coding을 하여 구현하는 행위가 기여하는 바가 실세계에서 얼마나 많은 부분을 차지하고 있는지 모를 가능성이 큽니다.

 

 

 

 

"사실 최근에는 연구분야 조차 MLOps를 이용하지 않으면 연구성과를 빠르게 낼 수 없다는 이야기를 합니다. 그럼 지금부터 연구자들이 MLOps에 관심을 갖어야할 이유에 대해서 살펴보도록 하겠습니다."

 

 

그림 출처: https://blogs.nvidia.co.kr/2020/09/11/what-is-mlops/

 

 

 

 

 

 

 

2. 머신러닝 or 딥러닝 연구자들이 MLOps에 관심 갖어야 하는 이유 

결국 machine learning (or deep learning) 제품을 만든다는 것은 위에서 언급한 3가지 단계 과정을 모두 포함합니다. 

 

학계에서는 design, model development, deployment와 같은 단계에 대해 크게 신경쓰진 않았습니다. 보통은 수학, 물리학, 생물학 등의 개념들을 잘 이용하여 새로운 딥러닝 이론제시하여 좋은 논문을 내는 것이 목적이었죠. 이러한 연구들이 local 환경에서도 잘 수행되면 복잡한 tool들이 필요가 없습니다. 그냥 데이터를 다운 받고, 딥러닝 모델을 구현하고 학습하고 evaluation하면 그만이죠.

 

하지만, 산업계에서는 현실적용 가능한 연구를 요구합니다. 그래서, 좋은 논문을 냈더라도 그것이 현실에 잘 적용이 되지 않는다면, 딥러닝 기술들이 거품이라는 이야기를 듣게되죠. 결국, 딥러닝 연구 역시 상용화를 목적에 두어야 더 환영받는 연구분야가 될 것 입니다.

 

대학원생 역시 졸업을 하고 산업계로 뛰어들 때, 이론만 아는 바보박사 또는 바보석사가 되지 않기 위해 딥러닝과 관련한 다양한 tool에 대해서 알고 있어야 합니다.

 

 

 

2-1. 석사시절 경험 (2017~2018)

2017년 대학원 석사 초기(1학기)에 연구를 하면서 아래와 같은 생각을 했던 적이 있었습니다.

  • 딥러닝 이론을 공부하는데도 시간 없는데 MLOps 같은 것 까지 신경쓸 순 없다.
  • 학계는 학계가 할 일이 따로 있다. 예를 들어, 학계는 창조적인 이론을 만들고 기존 이론들을 잘 정립하는게 주 된 역할이다.

 

위와 같은 생각은 석사를 졸업하면서 아래와 같이 바뀌게 됐습니다.

  • 구글, 페이스북, 엔비디아, 마이크로 소프트에서 제출한 논문 결과들이 과연 한 번만 테스트 해본 것일까? 
  • 좋은 결과를 얻기 위해서는 수 많은 실험을 실행할 수 있는 능력을 키워야 하는 것이 아닌가?
  • 내가 자원을 더 잘 활용할 수 있었더라면 더 많은 실험을 할 수 있지 않았을까?
  • 내가 공부한 내용을 산업계가 관심있어할까?

 

결국 이러한 질문을 통해서 내린 결론을 다음과 같았습니다.

 

"실험을 설계(design)할 이론 공부와 실험을 빠르게 실행할 개발(development) 공부를 병행해야겠다"

 

 

 

2-2. 외부연구원  경험 (2020)

2020년 석사시절 지도해주신 분께서 한국교통대 교수님으로 임용되셔서, 한국교통대 외부연구원으로 지내게 되었습니다.

 

"당시 의료인공지능 관련 연구를 하면서 들었던 생각은 기존의 딥러닝 모델을 실험하고 연구하는 방식에 모순이 많이 있다는 점이었습니다."

 

특히, 충분한 ablation study를 하지 않고도 논문이 accept이 되는 등 개인적으로 이해가 안가는 부분들이 많이 있었죠.

 

예를 들어, learning rate, batch size, random seed 등의 hyper-parameter 값에 따라서 실험 결과가 바뀌기도 하는데, 논문에서 단 한번의 실험으로 1%의 성능이 향상되었다, 2%의 성능이 향상되었다는 결론이 받아드려진다는게 이해가되질 않았습니다.

 

그래서, 종종 "딥러닝 실험을 할 때 필수적으로 해야할 ablation study을 왜 하지 않는것이냐?"라는 질문을 던졌을 때 돌아온 답은 아래와 같았습니다.

 

"실험할 자원도 없고, 시간도 없으니까요"

 

 

이때부터 딥러닝 연구를 위해서 MLOps 지식들이 필요할 수 있겠다라는 생각을 하게 됐습니다. 특히, Model development와 관련된 다양한 toolkit들에 관심을 갖게 되었고, 동시에 아래와 같은 기대를 하게 되었습니다.

 

"이러한 toolkit들을 잘 이용한다면 탄탄한 실험을 빠른 시간내에 할 수 있지 않을까?"

 

그래서, MLOps에 기반이 되는 GPU 공부를 시작으로 다양한 toolkit (ex: Github, Mixed precision, Horovod, Weight&Biases, Docker 등) 을 알게 됐습니다.

 

 

 

2-3. 현재 연구실 (2021)

현재는 2020년에 배웠던 몇 가지 MLOps 기법들을 적용해 보면서 연구에 많은 도움을 받고 있습니다. 

 

  1. Docker: 연구실 내 고사양 GPU 서버를 효율적으로 사용함
  2. Github: 개별적으로 개발한 후 통합(integration)하여 버전 관리를 진행
  3. Weigth&Biases: Hyper-parameter tuning, Experiment management를 자동화 하여 실험 및 결과를 빠르고 탄탄하게 분석 (Efficient ablation study)
  4. Horovod: 다양한 GPU를 이용하여 효율적인 분산처리 시스템을 구축한 후, 학습 속도를 증가시킴
  5. Mixed precision: 배웠던 GPU 지식을 활용해 문제없이 mixed precision을 적용하여 inference 속도를 증가시킴 

 

(시간이 되는대로 배운 개념들을 잘 글로 정리하고, 비교한 실험 결과들을 설명할 예정입니다.)

 

 

 

 

 

 

3. 내가 생각하는 (연구자들이 특히 관심갖어야 할) MLOps

3-1. GPU 성능의 발전

Samsung, TSMC나노 공정 경쟁이 지속되면서 GPU성능은 계속해서 증가할 것입니다. 현재(2021.10월 기준) 최신 GPU RTX 30 series의 나노공정 기술이 8nm인데, 최근(2021.10월 기준)에는 NVIDIA가 TSMC의 5nm 공정을 이용해 새로운 GPU 모델생산할 것이다라는 이야기가 돌고 있죠.

 

만약, 개인 연구자들이 몇 개의 GPU를 살 수 있게 가격이 조정되고, 더 좋은 GPU가 나온다면  GPU, TPU를 극대화 하는 기술들(ex: 분산처리 시스템, Tensor core 이용 기술)을 잘만 이용하면 누구나 좋은 실험을 할 수 있을 것입니다. 예를 들어, 앞으로 horovod와 같이 좀 더 발전된 분산시스템을 잘 이용할 수 있다면 발전된 GPU 자원을 극대화 하여 연구성과를 내는데 큰 일조를 할 수 있을 것입니다.

즉, 우리가 감히 상상도 해보지 못했던 실험들을 할 수 있을 것이고, 방대한 양의 실험들을 통해 좀 더 근거있는 연구 결과를 선보일 수 있을 것입니다. 그런데 지금부터 준비하지 않는다면 결국 나중에 다가오는 기회를 놓칠 가능성이 많아지겠죠. 

 

 

 

3-2. Auto ML (Feat. Feature Engineering, HPO, NAS)

[3-2-1. NAS (Neural Architecture Search)]

보통 ML (or DL) 연구자들이 하는 많은 일들 중 하나는 새로운 ML(or DL) 모델고안하고 구현하는 것입니다. 하지만, 모델을 고안하고 연구하는 것은 쉬운일이 아닙니다. 왜냐하면 특정 모델을 구현하는데 고려해야할 요소도 굉장히 많으며, 해당 모델이 커질 수록 사용해야할 자원많아지고 시간오래 걸리기 때문입니다. 그래서, 딥러닝이 풀어야할 문제에 최적화 된 모델자동으로 만들어주는 NAS라는 기술이 계속 연구되고 있습니다.

 

 

[3-2-2. Feature Engineering]

보통 산업계에서는 새로운 ML(or DL) 모델을 고안하지 않는 것 보다, 기존 모델의 성능을 유지보수 하고 빠른 시간내에 향상시키는 방법을 선호합니다. 최근에는 모델링을 중점적으로 하는 model-centric view 연구보다 데이터의 퀄리티를 향상 시키는 data-centric view 연구가 더 많은 관심을 받고 있습니다. 

 

(↓↓ Data Centric AI를 강조하는 Andrew ng)

 

해당내용을 요약하면 아래와 같습니다.

 

  1. Model-centric view
    • 모델이 좋으면 조금 품질이 떨어지는 데이터로 학습해도 잘 동작한다는 관점
    • Good model → Robust for various dataset
  2. Data-centric view
    • 모델링을 하더라도 데이터를 기반으로 만들어야 하는 것이 맞는 방향
    • 좋은 모델을 만드는 것보다 좋은 데이터를 만드는 것이 딥러닝 모델 성능에 더 크게 기여
    • 대부분의 작업은 데이터를 수집하고 가공하는 일

 

[생산된 철 제품 중 불량을 검출하는 프로젝트]

    • 첫 시도(=baseline)에서는 76.2% 검출율을 보임
    • 90% accuracy까지 올리는 것이 목표
    • 두 그룹으로 나눠서 프로젝트를 진행함
    • Model centric 그룹: 딥러닝 모델 연구
    • Data-centric 그룹: data 전처리 (cleansing), 질 좋은 데이터 선별
    • Data-centric 그룹에서 성능향상이 뚜렷하게 나타남

 

 

 

앤드류 응은 아래와 같이 딥러닝 연구 트렌드가 변해야 산업의 요구에 빠르게 답할 수 있다고 주장한듯한 느낌을 받았습니다.

 

 

 

 

ML에서 data-centric 연구feature engineering 분야와 많은 관계가 있습니다.

아래 강의를 보면 raw data에서 어떻게 good data를 선별하는지에 대해 이해하실 수 있으니 참고하시길 바랍니다.

 

(↓↓↓ 아래에서 4강 수업이 feature engineering, 5강이 Art and Science of ML ↓↓↓)

https://www.coursera.org/specializations/machine-learning-tensorflow-gcp#courses

 

Machine Learning with TensorFlow on Google Cloud

Google 클라우드에서 제공합니다. Learn ML with Google Cloud. Real-world experimentation with end-to-end ML. 무료로 등록하십시오.

www.coursera.org

(↓↓↓Feature Engineering 관련 설명 ↓↓↓)

https://taeu.github.io/coursera/deeplearning-coursera-featrue-engineering/

 

[Coursera] 데이터 전처리 : Feature Engineering - Machine Learning with Tensorflow on Google Cloud Platform

목표

taeu.github.io

 

[Note]

보통 딥러닝에서는 유의미한 feature를 뽑아주는 feature engineering 역할을 DNN이 수행합니다. 아마 이 부분이 MLOps와 DLOps 를 구분짓게 하는 요소가 될 수 있을 것 같네요.

그림 출처: https://cacm.acm.org/magazines/2020/1/241703-techniques-for-interpretable-machine-learning/fulltext

 

 

[3-2-3. Hyper-Parameter Optimization (HPO)]

앞서 언급했듯 딥러닝에서는 결과영향을 미치는 다양한 hyperparameter들 (ex: batch size, learning rate, random seed 등)이 존재합니다. 그래서 보통 hyper-parameter들에 대한 ablation study가 따로 진행되기도 하죠. 만약에 다양한 hyper-parameter 조합을 학습이 끝날 때 마다 manually 설정해주면 굉장한 시간이 소요될 것 입니다. 예를 들어, 'batch=16, learning=0.1'이라고 설정한 학습이 끝났으면, 'batch=32, learning=0.01'로 설정하고 다시 학습시켜야 하는데, 언제 학습이 끝났는지도 모르고 (물론 요즘은 알람기능이 있긴 합니다만..), 이걸 하나씩 manually 바꿔주는 것도 여간 귀찮은 일이 아닙니다.

 

또한, hyper-parameter search 방식도 random search, grid search, Bayesian optimization, Tree-structured Parzen Estimators algorithm 등 너무나도 많기 때문에 manually 설정하여 학습한다면 많은 시간이 소요되죠. 그래서, 보통 weight&biases 를 통해 자동으로 hyper-parameter 값을 setting 해주어 테스트하고 결과를 visualization 해주는 tool을 이용하기도 합니다.

 

 

지금까지 설명한 내용들을 보통 AutoML이라는 영역안에 포함시키기도 합니다. 즉, AutoML이 잘 작동하면 할 수록 지금처럼 manually 모델링, manually hyper-parameter search 등을 할 필요가 없어지겠죠. 결국, Auto ML에 필요한 software가 MLOps tool로써 나오게 된다면 지금까지 딥러닝을 연구해왔던 방향이 매우 달라질 수 있을 겁니다.

 

그림 출처: https://ettrends.etri.re.kr/ettrends/178/0905178004/

 

 

 

 

 

4. MLOps 관련 유용한 자료

UCBerkely 대학boot campus를 통해 MLOps를 잘 다루는 것이 ML practioners에게 왜 중요한지 설명하고 있습니다.

 

https://fullstackdeeplearning.com/spring2021/lecture-6/

 

Full Stack Deep Learning

Hands-on program for software developers familiar with the basics of deep learning seeking to expand their skills.

fullstackdeeplearning.com

 

위의 링크는 boot campus에서 다루는 여러 lecture 중 "Lecture 6: MLOps Infrastructure & Tooling" 파트인데, ML practioners에게 아래와 같은 지식이 중요하다는 언급을 하고 있습니다.

 

  1. Software Engineering
    • ANACONDA
    • VScode
    • CUDA
    • Python
  2. Compute Hardware
    • NVIDIA GPU model
    • Cloud Options (ex: AWS, GCP, Azure)
  3. Resource Management
    • Docker
    • Kubernetes/Kubeflow
  4. Frameworks
    • Pytorch (lighting)
    • Tensorflow
    • Keras
    • fast.ai
  5. Distributed Training
    • Horovod
    • Ray
  6. Experiment Management
    • Weight&Biases
    • TensorBoard
  7. Hyperparameter Tuining
    • Weight&Biases: Sweep
    • Ray Tune

 

(↓↓↓ UC Berkeley boot campus lecture note ↓↓↓) 

https://fullstackdeeplearning.com/spring2021/lecture-6/

 

Full Stack Deep Learning

Hands-on program for software developers familiar with the basics of deep learning seeking to expand their skills.

fullstackdeeplearning.com

 

 

 

지금까지 MLOps에 관한 개념 및 개인적인 생각에 대한 글을 작성해봤습니다.

다음 글 부터는 실제로 사용하고 있는 여러 Tool들을 소개해보도록 하겠습니다.

 

 

 

 

 

[Reference]

https://fullstackdeeplearning.com/spring2021/lecture-6/

 

Full Stack Deep Learning

Hands-on program for software developers familiar with the basics of deep learning seeking to expand their skills.

fullstackdeeplearning.com

 

 

https://www.coursera.org/specializations/machine-learning-tensorflow-gcp#courses%EF%BB%BF

 

Machine Learning with TensorFlow on Google Cloud

Google 클라우드에서 제공합니다. Learn ML with Google Cloud. Real-world experimentation with end-to-end ML. 무료로 등록하십시오.

www.coursera.org

 

 

https://ml-ops.org/content/mlops-principles

 

ml-ops.org

Machine Learning Operations

ml-ops.org

 

 

안녕하세요.

이번 글에서는 디지털 뉴딜 사업의 일환인 AI hub를 소개하려고 합니다.

 

최근 딥러닝 학습을 하기 위해 양질의 데이터가 절실히 필요한 상황입니다.

특히, 의료 데이터의 경우에는 우수 인력들이 동원되어야 학습데이터를 구축 할 수 있습니다. 

 

그래서 정부에서는 대규모 투자를 하여 양질의 데이터 생산할 수 있게 지원하고 있는데,

그 중의 하나가 디지털 뉴딜 사업이고, 이러한 디지털 뉴딜 사업의 일환이 AI hub입니다. 

 

그래서 딥러닝을 공부하고 모델을 개발하는 사람들이 데이터를 구하는데 어려움이 없도록 AI hub신청하면 다양한 데이터 (ex: 공공의료데이터, 위성데이터 등) 제공 받을 수 있습니다.

 

이번 글에서는 위에서 설명한 내용들을 좀 더 구체적으로 알아보도록 하려고 합니다.

 

디지털 뉴딜을 설명하기에 앞서 뉴딜이 무엇이고, 한국판 뉴딜이 무엇인지 먼저 알아본 후 디지털 뉴딜과 AI hub에 대해서 설명하도록 하겠습니다.

 

 

1. 뉴딜이 무엇인가요?

루즈벨트를 미국 역사상 최초로 4번 연속 대통령으로 이끌었던 정부주도 사업뉴딜정책입니다.

이 뉴딜 정책을 설명하기 위해 잠시 짧게 역사적인 배경을 설명하도록 하겠습니다. 

 

1) 1865년 미국: 남북전쟁 종료

  • 1865년 미국의 남북전쟁이 끝나면서 통합된 정부가 수립이 됩니다.

 

2) 1865~1918년 미국: 미국 재건 시작

  • 이 시기에 유럽을 중심으로 다른 대륙에서 2750만 명이라는 이민자들이 미국으로 몰려들어오게 됩니다.
  • 이러한 이민자들 덕분에 노동력을 공급 받을 수 있었고, 캘리포니아와 같이 개발되지 않은 지역에 다양한 지역 사회형성할 수 있었습니다.

 

3) 1920년 미국: 미국 경제 호황

  • 1918년 1차 세계대전이 영국, 러시아, 프랑스 연합국승리로 끝났습니다.
  • 당시 영국은 러시아와 프랑스에 엄청난 돈을 빌려준 상태였습니다.
  • 하지만, 영국 역시 전쟁 중 이었기 때문에 부족한 돈을 미국 금융가에게서 빌리게 됩니다.
  • 영국은 미국에게 빌린 돈을 패전국인 독일에게 막대한 배상금을 주며 받으려 했습니다.
  • 물론, 러시아와 프랑스에게 빌려줬던 돈도 받아 미국에게 주려고 했습니다.
  • 하지만, 유럽의 경제는 이미 파탄이 난 상태였기 때문에 영국과 미국 모두 돈을 받기 힘든 상태가 되었습니다.
  • 그래서, 미국유럽 경제를 살리기 위해 대규모 투자를 하여 공장을 늘리고 많은 일자리(노동자)를 만들어 냈습니다. 이로 인해 투자 활발해 지면서 미국 또한 대규모 경제 호황을 맞이하게 됐죠

(↓↓↓ 미국의 1920년대 배경을 잘 설명해주는 동영상↓↓↓)

https://www.youtube.com/watch?v=xatt7AQPnMc 

 

 

 

4) 1930년 미국: 미국 경제 대공황

  • 늘어난 공장을 통해 공급수요앞서게 되자 기업가 또는 투자자들의 이윤줄어들게 되었습니다.
  • 그러자 노동자들을 해고시켜 노동임금을 줄이고 이윤증가시키려고 했습니다.
  • 하지만, 노동자들이 곧 수요자였기 때문에 미국 경제공장도 멈추고 대규모 실업자가 생겨나게 됩니다.

(↓↓↓1930년대 미국 대공황을 잘 설명한 영상↓↓↓)

https://www.youtube.com/watch?v=1W3_kkmHR5I 

 

 

 

5) 1930년 미국: 미국 경제 대공황

  • 1933년 루즈벨트 대통령은 미국 경제 대공황극복하고자 뉴딜 정책을 실시합니다.
  • 뉴딜 정책중 하나가 대규모 토목 사업후버 댐 건설입니다.
    • 서부개척과 이민자들의 유입으로 서부지역환경개선할 필요가 있었습니다.
    • 하지만, 특히 후버 댐이 건설되기 전까지 홍수 또는 가뭄에 의해 적절한 농업을 할 수 없게 되었죠.
    • 그래서 후버 대통령 (1929년 3월 4일 ~ 1933년 3월 4일) 은 1931년에 농장을 현대화하고 전력을 공급하고 홍수를 억제하기 위해 엄청난 규모의 댐 공사를 추진합니다. 그리고, 자신의 이름을 따 댐의 일음을 후버 댐이라고 명명합니다.
    • 루즈벨트 대통령은 본래 하고 있던 후버 댐 사업을 이어받아 1935년에 준공(=공사를 마침)을 선언합니다.

 

결국 뉴딜 정책이란 아래와 같이 정리할 수 있습니다.

 

"경제 위기를 극복하고자 정부에서 지원한 대규모 공공사업"

 

 

 

 

 

2. 한국판 뉴딜은 무엇인가요?

2020.04.22청와대 제5차 비상경제회의에서 정부가 국가 프로젝트로한국판 뉴딜구상하겠다는 의사를 처음 밝힙니다.

 

코로나와 일자리 문제로 인한 경제 위기를 극복하고자 정부에서 대규모 공공사업을 진행하려고 한 것이죠.

 

그리고 2020.07.14일에 '한국판 뉴딜' 국민보고대회를 통해 1시간 정도 '한국판 뉴딜' 정책 설명을 진행합니다.

 

(↓↓↓'한국판 뉴딜' 국민보고대회 관련 뉴스 (풀영상은 따로 검색하면 1시간 짜리 영상이 나옵니다↓↓↓)

https://www.youtube.com/watch?v=8baEZB88dNY 

 

'한국판 뉴딜' 정책은 크게 두 가지 사업(정책)으로 구성되어 있습니다.

  1. 디지털 뉴딜
  2. 그린 뉴딜

2020.07.14일 발표한 '한국판 뉴딜 1.0'에서는 2025년까지 국고 114조원, 민간과 지자체 포함 160조원을 투자하여 관련 일자리를 창출할 것이라고 밝혔습니다.

 

'한국판 뉴딜 1.0'방향성은 아래 "그림1"과 같이 '10대 대표과제'를 통해 파악할 수 있습니다.

 

그림1. 이미지 출처: https://www.korea.kr/special/policyCurationView.do?newsId=148874860

 

 

https://www.korea.kr/special/policyCurationView.do?newsId=148874860 

 

[정책위키] 한눈에 보는 정책 - 한국판 뉴딜

1. 한국판 뉴딜이란?2.한국판 뉴딜의 구조와 추진체계3.분야별 주요 내용4.한국판 뉴딜 주요 추진과제5.한국판 뉴딜 펀드 6.사례로 본 한국판 뉴딜 7.그 밖의 참고자료 / 누리집 1. 한국판 뉴딜이란?

www.korea.kr

 

 

그리고 1년 뒤 2021.07.14일 '한국판 뉴딜 2.0'을 발표하게 됩니다. 

'한국판 뉴딜1.0'의 방향성을 그대로 가져가면서 투자액을 좀 더 증액할 것이라고 합니다.

 

https://www.youtube.com/watch?v=ap0Wz5CTMOM 

 

 

앞서 언급했듯이 '한국판 뉴딜' 정책은 크게 두 가지로 분류 할 수 있습니다.

  1. 디지털 뉴딜
  2. 그린 뉴딜

 

앞서 디지털 뉴딜에 대해서 알아보기로 했으니, 지금부터 디지털 뉴딜에 대해 좀 더 자세히 설명드리도록 하겠습니다.

 

 

 

 

 

3. 디지털 뉴딜은 무엇인가요?

'한국판 뉴딜' 중 하나의 중심축을 담당하는 디지털 뉴딜은 크게 세 가지 방향성을 갖고 있습니다.

  1. 데이터 댐
  2. 지능형 정부
  3. 스마트 의료인프라

 

그림1. 이미지 출처: https://www.korea.kr/special/policyCurationView.do?newsId=148874860

 

 

여기서 제가 소개해 드릴 부분은 "데이터 댐""스마트 의료인프라"입니다.

 

 

3-1. 데이터 댐

오늘 날 적용하는 인공지능의 대표격인 딥러닝은 크게 두 가지 요소를 필요로 합니다.

  1. 데이터
  2. 딥러닝 모델 with 학습 방법론

 

학계에서 열심히 연구하는 부분들은 "2. 딥러닝 모델 with 학습 방법론"입니다.

수 많은 연구자들이 어떻게 하면 효율적인 딥러닝 모델을 만들 수 있을지 연구하여 논문으로 발표합니다.

 

하지만, 이러한 딥러닝 연구가 진행되기 위해서 반드시 선행되어야 하는 작업이 있습니다.

바로 딥러닝 모델을 학습 시키기 위한 '데이터'만드는 작업입니다.

 

결국 양질의 '데이터'가 있어야 효율적인 인공지능 연구들이 가능합니다.

 

그래서 정부는 디지털 뉴딜의 일환으로 데이터들을 한 곳에 저장 시킬 "데이터 댐"을 만들기로 합니다.

 

정부는 데이터 댐에 관련 이야기를 언급하면서 "D.N.A 생태계 강화"를 강조했습니다.

'D.N.A''Data. Network. AI' 약자인데, 데이터들을 하나의 저장소(=데이터 댐)에 모아 5G 기반의 통신만 기술을 이용해 AI 관련 사업하는 사람들에게 제공하면 어떻게 될까요?

 

위와 같이 공공 데이터 저장소가 있으면 많은 인공지능 기업과 연구자들이 데이터를 모으는 수고를 덜 면서 연구에만 몰두 할 수 있게 됩니다.

 

(↓↓↓'디지털 뉴딜'에서 데이터 댐에 관한 설명↓↓↓)

https://www.youtube.com/watch?v=9iNjaG72SSo 

 

 

(↓↓↓'데이터 댐' 관련 설명↓↓↓)

https://www.youtube.com/watch?v=EWIq6aWxbdg 

 

 

 

3-2. 스마트 의료인프라

의료 인공지능 및 IT결합하면서 개선될 수 있는 부분은 굉장히 많습니다.

 

몇 가지 예를 들면, 웨어러블 디바이스 또는 실시간 감지를 통해 사람의 생처정보 및 행동패턴을 분석하여 환자들을 지속 관찰할 수 도 있고, 성능 좋은 의료인공지능 모델로 인해 정확성 높고 더 빠른 진료를 가능하게 할 수도 있습니다. 또한 원격의료 시스템을 지원할 수 도 있고, 불필요한 중간체계를 줄여주어 의료비용을 감소시킬 수 도 있습니다.

 

(↓↓↓디지털 헬스케어와 관련해서 작성한 글↓↓↓)

https://89douner.tistory.com/195?category=986138 

 

1. 미국의 Healthcare환경 및 의료시스템

안녕하세요. 이번 글에서는 미국의 healthcare환경 및 의료 시스템에 대해서 알아보도록 하겠습니다. 사실, 각 나라마다 의료환경이 다릅니다. 예를 들어, 유럽의 의료환경, 한국의 의료환경, 미국

89douner.tistory.com

 

 

 

(↓↓↓디지털 뉴딜 사업 중 "스마트 의료인프라"관련 영상↓↓↓)

https://www.youtube.com/watch?v=d2d6-hRXXg4 

 

 

 

결국 의료분야에서 인공지능 모델을 이용하려는 연구자들은 위에서 언급한 '데이터 댐', '스마트 의료인프라'와 모두 관련있는 일을 하고 있으시다고 보셔도 될 것 같습니다.

 

 

 

 

 

 

4. AI hub는 무엇인가요?

만약 본인이 의료 인공지능을 연구하고 있다고 하신다면 연구를 어떻게 하고 있으신가요?

 

딥러닝 모델, 그 외 인공지능 학습방법론 등과 관련된 분야들 (ex: unsupervised learning, domain adaptation, CNN, GNN, etc ...) 을 연구하시고 있으실텐데, 이러한 연구를 하기 위해서는 데이터필요하실 겁니다.

 

보통 의료 분야에서 인공지능 모델을 연구하기 위한 방법은 두 가지 입니다.

  1. 사설 병원 (ex: 서울아산병원, 삼성서울병원, 서울대병원, 연세대병원, 고려대 병원 등..)의 private dataset을 이용한 연구 진행 방식
  2. Kaggle, MICCAI 에서 개최하는 challenge에서 제공해주는 public dataset을 이용한 연구 진행 방식

 

Private dataset양질의 데이터이지만 일반 연구자들이 접근하기가 쉽지 않고, public dataset의 경우에는 접근성좋지 품질떨어지는 경우가 종종 있습니다.

 

그래서 정부 양질의 데이터를 공공 개방할 수 있도록 '데이터 댐'을 만들기로 했는데, 이를 대표하는 곳AI-hub라는 곳입니다. (미리 말씀 드리면 의료 데이터는 다른 데이터들에 비해 데이터를 신청하는 것이 까다롭습니다. 아무래도 사람과 관련된 데이터라 엄격할 수 밖에 없겠죠? 하지만, private dataset은 보통 해당 기관 사람 아니면 접근이 거의 불가능 한 점을 보면 상대적으로 이용하기 수월하다고도 할 수 있을 것 같습니다)

 

(↓↓↓ AI-hub 사업 설명 영상↓↓↓)

https://www.youtube.com/watch?v=sEFPh1f63aE

 

 

(↓↓↓ AI-hub 사이트↓↓↓)

https://aihub.or.kr/

 

홈 | AI 허브

AI 데이터를 찾으시나요? AI 학습에 필요한 다양한 데이터를 제공합니다. 원하시는 분야를 선택해 보세요.

aihub.or.kr

 

 

위의 사이트에 접속하시면 아래와 같은 화면을 보실 수 있습니다.

굉장히 다양한 데이터들 종류가 있는데, 이 중에 헬스케어와 관련된 데이터들은 무엇이 있는지 살펴보도록 하겠습니다 (아래 '헬스케어' 부분을 클릭하시면 됩니다)

그림2

 

 

 

헬스케어 데이터들을 살펴보니 '이미지', '비디오', '오디오', '3D', '센서' 등 다양한 의료데이터들이 있네요.

이 중에서 '간암 진단 의료 영상'을 클릭해서 보도록 하겠습니다.

그림3

 

 

 

'간암 진단 의료 영상' 데이터와 관련된 정보들이 보이네요.

아래 "그림4"에서 우측 하단을 부분에서 교육활용동영상이라는 부분이 있는데, 해당 영상을 클릭하면 데이터에 대한 설명을 유튜브 영상으로 보여줍니다.

 

그림4

(↓↓↓간암 진단 의료 영상 관련 교육활용동영상↓↓↓)

https://www.youtube.com/watch?v=QQXQhWsy2YE 

 

 

 

 

굉장히 다양한 기관에서 의료 데이터를 만들기 위해 참여했다는것을 확인할 수 있었습니다.

그림5

 

데이터 형테는 DICOM, PNG, JSON 형식으로 제공되고, 폴더 트리에 대한 설명도 자세하게 적어놓은 것을 알 수 있습니다.

그림6

 

(↓↓↓DICOM 파일 관련 설명↓↓↓)

https://89douner.tistory.com/293

 

3-1. DICOM 파일이란? (Feat. Definition, PACS, digital image 습득과정)

안녕하세요. 이번 글에서는 의료 영상(Medical imaging)에서 사용하는 DICOM 파일이 어떻게 생겨났는지, 어떻게 이용되고 있는지 알아보도록 하겠습니다. 또한 DICOM이라는 것이 digital image이기 때문에,

89douner.tistory.com

 

 

그렇다면 이러한 데이터들을 어떻게 이용할 수 있을까요?

 

앞서 '그림3'에서 '간암 진단 의료 영상'을 클릭하고 들어가면 아래 화면이 나오는걸 '그림4'에서 확인하셨을 거에요. 이 화면에서 아래 "그림7"과 같이 '이용신청'을 클릭해줍니다. 

 

그림7

 

 

아래 화면과 같이 데이터를 신청하는 절차가 나오네요.

의료 데이터는 이용신청을 위해 좀 더 까다로운 절차가 진행됩니다.

 

그림8

 

 

위에서 설명하고 있는 절차중 'IRB'관련 내용은 아래 글을 참고해주시면 좋을 것 같습니다.

https://89douner.tistory.com/295

 

4. 한국에서 의료 데이터를 다루기 위한 행정절차

안녕하세요. 이번 글에서는 한국에서 의료 데이터를 다루기 위한 행정적 절차에 대해 소개해드리려고 합니다. 1. Motivation (의료 데이터를 사용하는데 왜 행정적 절차가 필요할까요?) 딥러닝 모델

89douner.tistory.com

 

이외에 "생명윤리준수서약서"도 작성하여 제출해야 하니 참고하시면 될 것 같습니다.

 

 

 

 

지금까지 '한국판 뉴딜', '디지털 뉴딜', 'AI-hub'를 소개하면서 의료 인공지능을 하시는 분들이 어떻게 양질의 데이터를 신청하고 모을 수 있는지 알아보았습니다.

 

감사합니다.

 

안녕하세요.

이번 글에서는 한국에서 의료 데이터를 다루기 위한 행정적 절차에 대해 소개해드리려고 합니다.

 

 

1. Motivation (의료 데이터를 사용하는데 왜 행정적 절차가 필요할까요?)

딥러닝 모델을 이용해 Chest-Xray, CT 등의 의료 영상을 classification, segmentation, detection을 할 때, 많은 분들이 Kaggle과 같은 public data를 이용합니다.

 

반면 병원에서 마련한 private dataset을 이용할 때도 있습니다. 즉, 병원소속 연구원들은 private dataset을 이용해 병원 자체 연구를 하기도 하죠. 

 

그런데, 병원 데이터(=private dataset)이라는 것이 대부분 임상데이터입니다. 

 

Q. 임상시험이란?

A. 사람을 직접 대상으로, 사람에게서 추출(또는 적출)된 검체나 사람에 대한 정보를 이용하여 이루어지는 모든 시험 → 즉, 임상데이터는 사람으로 부터 얻어지는 데이터

 

즉, 사람에 대한 데이터를 사용하는 것이기 때문에 굉장히 엄격한 윤리적 기준이 적용됩니다. 결국 연구자들은 이러한 윤리적 기준에 대해서 잘 알고 있어야 하기 때문에 관련 교육이 필요합니다.

 

 

 

2. 프로그램 수강 절차

위에서 언급한 교육을 수강하는 순서를 말씀드리도록 하겠습니다.

 

2-1. 질병보건통합관리시스템 접속후 사용자 가입

해당 프로그램을 듣기 위해서는 "질병관리청 교육시스템"에 접속해야 합니다. 

"질병관리청 교육시스템"에 접속하기 위해서는 "질병관리청 질병보건통합관리시스템"에서 먼저 사용자 가입을 해야 합니다.

 

https://is.kdca.go.kr/

 

질병관리청 질병보건통합관리시스템

 

is.kdca.go.kr

 

 

가입 시 근무하고 있는 병원소속같은 정보를 기입해주면 정상적으로 가입이 완료됩니다.

 

 

2-2. 질병관리청 교육시스템에서 임상교육개론 강의듣기

앞서 "질병관리청 질병보건통합관리시스템"에 사용자 가입을 완료 하셨다면, "질병관리청 교육시스템"에서 임상교육개론 강의를 들으시면 됩니다. (로그인시 공인인증서가 필요합니다)

 

강의를 듣는 순서는 아래와 같습니다.

 

1) 질병관리청 교육시스템 접속 및 로그인

https://edu.kdca.go.kr/edu/index.html

 

질병관리청 교육사이트

 

edu.kdca.go.kr

 

 

 

2) 과정안내 클릭

 

 

 

3) 과정명에 "임상연구개론" 입력 후, 관련 교육 신청

 

 

 

4) 나의 강의실에서 해당 강의 수강

영상길이는 2시간 정도이며, 따로 시험은 없었습니다.

 

 

 

5) 이후 수료증출력을 클릭하시고, 수료증을 pdf로 다운받으시면 됩니다. 

 

※참고로 임상교육개론으로 받은 수료증은 주기적으로 갱신해줘야 한다니 참고해두세요!

 

 

 

3. IRB(Institutional Review Board, 의학연구윤리심의위원회) 허가

의료 데이터 연구를 이용하여 연구를 진행하기 위해서는 해당 의료 데이터를 보유하고 있는 기관(ex: 병원)에 정식으로 IRB 허가를 신청해야합니다.

 

IRB 허가 신청을 하기 위해서는 GCP (Good Clinical Practice) 교육을 이수해야 하는데, 앞선 "임상교육개론"이 이에 해당합니다.

 

IRB 허가신청 절차는 앞선 "임상교육개론" 수료증 및 몇 가지 첨부 파일을 구비하여, 내가 근무하고 있는 병원 IRB 사이트에 등록을 하면 허가절차가 진행됩니다.

 

 

 

4. 과학기술인등록번호

보통 병원에서 의료 데이터를 기반으로 진행하는 연구들은 국가지원과제인 경우가 많습니다.

그래서 보통 국가정보사이트에 과학기술인으로 등록되어야 하기 때문에 아래 사이트에서 과학기술인 등록을 진행합니다. 

 

https://www.ntis.go.kr/hurims/hmreg/researcher/reg/checkRealNm.do

 

NTIS > 국가연구자번호

 

www.ntis.go.kr

 

 

 

지금까지 병원에서 의료 데이터를 사용하기 위한 간단한 행정절차에 대해서 알아봤습니다.

감사합니다.

 

 

 

[Reference]

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=atelierjpro&logNo=221330719904 

 

의료 데이터 연구자 윤리 교육 (필수)

의료 데이터를 사용하는 연구를 진행하기 위해서는 데이터 보유 기관에 정식으로 IRB라는 허가 절차를 ...

blog.naver.com

 

 

 

 

 

 

 

안녕하세요.

이번 글에서는 dicom 파일을 딥러닝 학습에 맞게 변환시켜주기 위해 조정해주는 전처리 기법에 대해서 알려드리려고 합니다.

 

 

 

1. DICOM 파일의 bit depth (Feat. Hounsfield unit)

한 이미지를 구성하고 있는 pixel 값의 범위는 기본적으로 0~255입니다.  \(0\sim2^8\)의 범위를 갖고 있기 때문에 8bit depth를 갖고 할 수 있습니다.

 

(↓↓↓bit depth (or color depth; 색 깊이)에 대한 설명은 아래 글을 참고해 주세요↓↓↓)

https://89douner.tistory.com/293

 

3-1. DICOM 파일이란? (Feat. Definition, PACS, digital image 습득과정)

안녕하세요. 이번 글에서는 의료 영상(Medical imaging)에서 사용하는 DICOM 파일이 어떻게 생겨났는지, 어떻게 이용되고 있는지 알아보도록 하겠습니다. 또한 DICOM이라는 것이 digital image이기 때문에,

89douner.tistory.com

 

<그림 출처: https://ai.stanford.edu/~syyeung/cvweb/tutorial1.html>

 

 

하지만, dicom 파일을 구성하고 있는 pixel은 0~255의 범위만 갖고 있는 것이 아니라, "-x ~ +x" 와 같이 범위가 마이너스부터 시작 되는 경우도 있고, bit depth가 12bit, 16bit로 구성되어 있는 것도 많습니다. 

 

예를 들어, CT에는 hounsfield unit (HU)이라는 것이 있습니다. X-ray 또는 CT 촬영 원리는 사람에게 방사선을 쏴서 방사능 투과율에 따라 detector 부분이 다르게 보이는 것입니다.  

 

 

 

결국 투과율에 따라 detector에 입력되는 값들이 다를 텐데, hounsfield라는 사람은 HU라는 단위를 통해 물체를 구분했습니다. HU 단위는 물을 기준으로 하고 뼈는 400~1000 HU 사이의 값을 갖고, 공기는 -1000의 값을 갖는다고 정의했습니다. 값이 작을 수록 검은색을 띄며, 값이 클 수록 흰색을 띕니다 (gray scale과 비슷하죠) 

 

<그림 출처: https://www.researchgate.net/figure/The-Hounsfield-scale-of-CT-numbers_fig2_306033192>

 

<그림 출처: https://www.researchgate.net/figure/Hounsfield-scale-table_tbl1_327863426>

 

<그림 출처: https://processing.org/tutorials/color>

 

 

실제로 dicom 파일 하나를 가져와서  max, min 값을 뿌려보면 아래와 같이 나옵니다.

(Note. DICOM 파일에서 추출한 pixel 값들이 완전히 HU 값을 표현한다고 볼 순 없습니다. 그 이유에 대해서는 다음 글의 "CT 전처리 관련 글"에서 'slope intercept equation' 부분에서 설명하도록 하겠습니다) 

 

 

2. DICOM 파일 전처리

앞서 DICOM 파일의 bit depth (color depth)와 실제 이미지 bit depth는 다르다고 언급했습니다.

딥러닝 모델에 들어가는 값은 보통 bit depth를 기반으로 하기 때문에, 이에 맞게 바꾸어 주어야 합니다. 즉, 12bit depth였다면, 0~255 range를 갖는 8bit depth로 변경시켜주어야 하는 것이죠.

 

8bit depth로 변경해주는 방법은 아래와 같습니다.

 

  1. 12bit depth 값들을 모두 0~1 사이로 normalization 해주기
  2. 0~1 사이로 normalization 해준 값들에 255를 곱해주어 이미지에 맞는 8bit depth로 변경해주기

 

 

(↓↓↓Normalization 공식↓↓↓)

<그림 출처: https://python.plainenglish.io/how-to-de-normalize-and-de-standardize-data-in-python-b4600cf9ee6>

 

 

 

 

이렇게 바꿔준 값들은 이미지로 저장시키거나 numpy로 저장시킵니다.

그리고, albumentation 같은 곳에서 load하기 쉽게 formatting을 해주죠.

 

(↓↓↓ albumentation 관련 글↓↓↓)

https://89douner.tistory.com/312?category=1001221 

 

1-2. Data Load (Feat. Albumentations)

안녕하세요. 이번 글에서는 Albumentations라는 패키지를 이용하여 데이터를 로드하는 방법에 대해서 설명하도록 하겠습니다. https://github.com/albumentations-team/albumentations GitHub - albumentations-te..

89douner.tistory.com

 

 

 

지금까지 DICOM 파일 전처리 관련된 설명이었습니다.

감사합니다~

안녕하세요.

이번 글에서는 contrastive learning에 대해서 설명하도록 하겠습니다.

 

Contrast라는 용어를 정의하면 아래와 같습니다.

 

"A contrast is a great difference between two or more things which is clear when you compare them."

 

그렇다면, contrastive learning이라는 것은 대상들의 차이를 좀 더 명확하게 보여줄 수 있도록 학습 한다는 뜻이 되겠죠?

 

'대상들의 차이'라는 말에서 중점적으로 봐야 할 것은 '차이'라는 용어입니다. 보통 어떤 '기준'으로 인해 '차이'가 발생합니다. 

 

예를 들어, 어떤 이미지들이 서로 유사하다고 판단하게 하기 위해서는 어떤 기준들이 적용되어야 할까요? 즉, 어떤 '기준'을 적용하면 이미지들이 비슷한지, 비슷하지 않은지에 대한 '차이'를 만들어 낼 수 있을까요?

 

고양이라는 이미지가 있다고 가정해보겠습니다. 고양이 이미지에 augmentation을 주게 되도 그 이미지는 고양이 일 것입니다. 즉, 원본 고양이 이미지와 augmentation이 적용된 고양이 이미지서로 유사(=positive pair)하다고 할 수 있죠.

 

 

누군가(제3자)가 augmented image에 굳이 'similar'라고 labeling 해줄 필요 없이 input data 자기 자신(self)에 의해 파생된 라벨링(supervised ex: augmented image) 데이터로 학습(learning)하기 때문에 self-supervlsed learning이라고 할 수 있습니다.   

 

"하지만 'similar' 정의는 어떤 기준을 삼느냐에 따라 굉장히 달라 질 수 있습니다."

 

물론, similar를 찾는 방법도 굉장히 다양하겠죠. 지금부터 이에 대해서 천천히 알아보도록 하겠습니다.

 

 

 

 

 

1. Similarity learning 

앞서 언급한 내용 중에 가장 핵심적이고 자주 등장하는 용어가 'similar'입니다. 그렇다면, contrastive learning과 similarity learning은 어떤 관계가 있을까요? 먼저, similarity learning정의부터 살펴보겠습니다.

 

"Similarity learning is closely related to regression and classification, but the goal is to learn a similarity function that measures how similar or related two objects are."

 

결국, contrastive learningsimilarity learning 모두 다 어떤 객체들에 대한 유사도와 관련이 있다는걸 알 수 있습니다.

 

<그림 출처: https://www.youtube.com/watch?v=OkcS4qE4Zsg>

 

 

좀 더 similarity learning을 알아볼까요?

먼저, similarity learning의 3가지 종류들에 대해서 알아보도록 하겠습니다.

 

(↓↓참고 자료↓)

https://en.wikipedia.org/wiki/Similarity_learning

 

Similarity learning - Wikipedia

Similarity learning is an area of supervised machine learning in artificial intelligence. It is closely related to regression and classification, but the goal is to learn a similarity function that measures how similar or related two objects are. It has ap

en.wikipedia.org

 

 

1-1. Regression similarity learning

 

      • 두 객체(ex: 이미지)간의 유사도를 알고 있다는 전제하에 supervised learning 학습을 시키는 것
      • 유사도는 어떤 기준(pre-defined)에 의해 설정되는데, 이 기준에 의해 모델이 학습됨
        • 위의 y유사도를 나타내 주는 → 즉, 유사도가 높으면 y 값이 높게 설정 됨
      • 앞서 설정한 유사도에 따라 모델이 학습되면, 학습된 모델에 test 데이터인 두 객체(ex:이미지)가 입력 될 때 pre-defined 기준에 따라 유사도를 결정
        • Ex) 강아지 이미지 데이터들 간에는 모두 강한 유사도를 주고강아지 이미지 데이터와 고양이 이미지 데이터들의 유사도는 굉장히 낮은 값으로 설정해주어 학습 시키면학습 한 모델은 강아지 이미지들끼리에 대해서 높은 유사도 값을 regression할 것 입니다.
    • 하지만이러한 유사도(y)를 미리 알고 어떻게 할당해줄 것인지는 굉장히 어려운 문제

 

 

 

1-2. Classification similarity learning

 

[앞선 "Regression similarity learning" 방식과 다른 점]

  • Regression: y∈R
    • 유사도(=y) 값의 범위는 실수 (ex: 0~1) → 유사도의 정도를 파악할 수 있음
    • 이때, R값의 범위를 어떻게 설정하고, 어떤 y값을 해줘야 하는지 어려움 (soften label 개념정도로 봐도 될 듯)
  • Classification: y{0,1}
    • 두 객체가 유사한지 아닌지만 알려주기 때문에 입력으로 들어오는 두 객체(ex:이미지)가 어느 정도로 유사한지는 알 수 없음

 

 

 

1-3. Ranking similarity learning

[앞선 두 가지 방식("regression or classification similarity learning")과 다른 점]

  • 앞선 두 가지 방식과 다른 부분은 "세 가지 입력 데이터 (triplets of objects)"를 필요로 한다는 점입니다.
  • 일반적인 데이터 "x"와 "x와 유사한 x+", "x와 유사하지 않은 x-" 데이터가 입력으로 들어갑니다.
  • 이런식으로 유사한 데이터들 간의 유사도와 유사하지 않은 데이터들 간의 유사도 차이를 위와 같이 설정하여 학습하게 됩니다. 

 

결국 contrastive learning과 similarity learning 모두 데이터들 간의 similarity를 알아내는 것이 목적입니다. 

 

"Contrastive learning is an approach to formulate the task of finding similar and dissimilar things for an ML model."

 

"The main idea of contrastive learning is to learn representations such that similar samples stay close to each other, while dissimilar ones are far apart."

 

<이미지 출처 논문: Deep Metric Learning via Lifted Structured Feature Embedding>

 

 

"Similarity learning is closely related to distance metric learning." 

 

데이터들끼리 유사도가 높다는 것을 거리(distance)관점에서 해석해볼 수 도 있습니다. 예를 들어, 유사한 데이터 끼리는 거리가 가깝다는 식으로 해석해 볼 수 있는 것이죠. 그래서, similarity learning, contrastive learning을 배우다 보면 distance metric learning이라는 용어가 자주 등장합니다. 

 

 

 

 

 

2. (Distance) Metric learning

유사도판단하는데 있어서는 굉장히 다양한 기준이 적용될 수 있습니다.  유사도 판단하는 한 가지 방법은 거리관점에서 해석하는 것입니다. 

 

보통 거리라는 개념을 단순히 점과 점 사이의 최단 거리로만 이해하는 경우가 있지만, 거리를 측정하는 방식에는 다양한 방법이 존재 합니다. 즉, "거리"라는 개념을 어떻게 해석하느냐가 굉장히 중요한 문제라고 볼 수 있습니다.

 

결국, 두 객체간의 거리를 측정할 수 있는 방법이 다양하기 때문에 두 객체간의 유사도를 적용할 수 있는 기준이 다양하다고 할 수 있습니다.

 

"Similarity learning is closely related to distance metric learning. Metric learning is the task of learning a distance function over objects."

 

 

위의 정의에 따라 metric learning객체간의 거리를 학습하는 방법들에 대해 연구하는 분야라고 할 수 있습니다.

 

그렇다면, metric이라는 개념부터 정의해볼까요? 

 

"A Metric is a function that quantifies a “distance” between every pair of elements in a set, thus inducing a measure of similarity."

 

 

객체(데이터)들 간의 거리(or 유사도)를 수량화 하는 방법여러가지가 있습니다. (결국, 우리가 배우는 contrastive learning 기법에서도 아래와 같은 metric들 중에 어느 것을 사용하느냐에 따라 다양한 연구가 진행 될 수 있겠죠.)

 

<그림 출처:  https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf>

 

 

Metric learning에서 중요한 개념은 '거리'입니다. 그렇기 때문에, metric learning에서 정의한 4가지 속성도 '거리'의 속성을 그대로 반영하고 있죠.

 

"A metric or distance function must obey four axioms"

 

  1. Non-negativity: f(x,y)≥0
    • x, y 두 데이터 간의 거리는 음수가 될 수 없다.
  2. Identity of Discernible: f(x,y)=0 <=> x=y
    • x, y 두 데이터 간의 거리가 0이라면, x와 y 데이터는 동일하다.
  3. Symmetry: f(x,y) = f(y,x)
    • "x,y" 간의 거리나, "y,x" 간의 거리는 같다 
  4. Triangle Inequality: f(x,z)≤f(x,y)+f(y,z)
    • "x,z"간의 거리는 "x,y" 간의 거리와 "y,z"간의 거리를 합한 것보다 클 수 없다.

 

 

 

2-1. Metric  of Two types

거리를 측정하는 metric 방식에도 크게 두 가지 종류가 있습니다.

 

  1. Pre-defined Metrics
    • 단순히 데이터들을 정의 된 metric 공식에 입력하고 '거리' 값을 도출하여 유사도 비교 
  2. Learned metrics
    • 데이터들로 부터 추정할 수 있는 다른 지표들을 metric 공식에 적용하여 '거리' 값을 도출 

 

<그림 출처: https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf>

 

 

'Learned metrics' 방식의 대표주자라고 할 수 있는 것은 딥러닝을 이용한 deep metric learning 방식입니다. 그럼 지금부터 deep metric learning에 대해 좀 더 알아보도록 하겠습니다.

 

 

 

2-2. Deep Metric Learning (Feat. Contrastive loss)

객체(데이터)들이 만약 고차원이라면 서로 간의 유사도비교하는건 굉장히 어려운 문제가 될 수 있습니다.

 

예를 들어, 의미적으로 가깝다고 생각되는 고차원 공간에서의 두 샘플(A,B)간의 실제 Euclidean distance는 먼 경우가 많습니다.그 이유는 “curse of dimension”으로 인해 의미 있는 manifold를 찾지 못했기 때문이죠. 

 

[추후에 Auto-Encoder 관련 글이 완성되면 manifold에 대한 보충 설명 글로써 링크를 걸어두도록 하겠습니다]

 

<그림 출처:  https://slidetodoc.com/image-manifolds-a-a-efros-16-721-learningbased/>

 

 

실제 Euclidean distance는 manifold 상에서 구해야 하기 때문에, manifold를 잘 찾는 것이 두 데이터간 유의미한 similarity를 구하는데 결정적인 역할을 할 수 있겠죠.

 

<그림 출처:  https://slidetodoc.com/image-manifolds-a-a-efros-16-721-learningbased/>

 

 

결국, 유의미한 manifold를 찾기 위해서는 dimension reduction 방식이 필요한데, 그것이 오늘날 자주 사용되는 deep neural network이죠.  

 

<그림 출처: http://daddynkidsmakers.blogspot.com/2021/05/>

 

 

결국, 특정 metric(ex: Euclidean distance)을 기준으로 한 유사도를 찾기 위해 deep learning model의 parameter들이 학습된다면, 이는 해당 meteric을 찾기 위한 manifold를 찾는 과정이라고 볼 수 있고, 이 과정 자체가 "estimated from the data"를 의미하기 때문에, learned metrics라고 볼 수 있는 것입니다.

<그림 출처:  https://tyami.github.io/deep%20learning/Siamese-neural-networks/>

 

다시 말해, deep metric learning이란 deep neural network를 이용하여 적절한 manifold를 찾아 metric learning을 연구하는 분야라고 정리할 수 있습니다. 

 

 

UIUC 대학의 SVETLANA LAZEBNIK 교수similarity learning ppt자료를 살펴보면 deep neural network를 이용하여 metric learening을 하는 것을 확인해 볼 수 있습니다.

 

<그림 출처:  https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf>

 

 

[deep metric learning의 예시]

먼저, 유사한 이미지를 한 쌍으로 한 positive pair 끼리는 Euclidian Loss가 최소화가 되도록 학습 시키면, deep neural network는 고차원 원본 데이터 positive pair끼리 거리가 가깝도록 low dimension으로 dimension reduction(or embedding) 할 것입니다. 즉, positive pair끼리는 Euclidian loss가 최소화 되게 parameter들이 학습된 것인데, 이것을 원본 데이터로 부터 추정(estimation)되었다고 볼 수 있기 때문에 learned metric이라고 한 것이죠.

 

 

또한, negative pair 끼리는 Euclidan distance 값이 커지도록 설정해줄 수 있습니다. 아래 수식을 보면, margin (m) 이라는 개념이 도입되는데, margin은 negative pair간의 최소한의 거리를 의미합니다. 예를 들어, 우리는 loss 값이 최소가 되기를 바라는데, negative pair (xn, xq) 의 거리가 m 보다 작다면 계속해서 loss 값을 생성해낼 것 입니다.  그런데, 만약 학습을 통해 negative pair 간의 거리가 m 보다 크게 되면 loss 값을 0으로 수렴시킬 수 있게되죠. 

 

 

 

위에서 언급한 두 수식을 결합한 loss를 contrastive loss라고 합니다.

 

 

쉽게, contrastive loss를 통해 학습을 한다는 것은 두 데이터가 negative pair일 때, margin 이상의 거리를 갖게 하도록 학습하는 것과 동일하다고 할 수 있습니다.

<그림 출처: https://pizpaz.github.io/paper/ml/Ranked-List-Loss-for-Deep-Metric-Learning/>

 

 

Pytorch에서는 negative pair 뿐만 아니라, positive pair에 대한 margin 값도 설정해놓고 있습니다. (참고로 아래 LpDistance는 Euclidean distance를 의미합니다)

 

<그림 출처: https://www.semanticscholar.org/paper/The-General-Pair-based-Weighting-Loss-for-Deep-Liu-Cheng/6c55bcc205b24c7aaf39680d71716e598a3cc536>

 

(↓↓↓ Pytorch metric learning loss ↓↓↓)

https://kevinmusgrave.github.io/pytorch-metric-learning/losses/#contrastiveloss

 

Losses - PyTorch Metric Learning

Losses All loss functions are used as follows: from pytorch_metric_learning import losses loss_func = losses.SomeLoss() loss = loss_func(embeddings, labels) # in your training for-loop Or if you are using a loss in conjunction with a miner: from pytorch_me

kevinmusgrave.github.io

 

 

참고로, margin이라는 개념이용하게 되면 경우에 따라 negative pairs의 관계를 크게 3가지로 나눌 수 있습니다.

  • d: distance를 구하는 함수
  • a: positive, negative pair의 기준이 되는 데이터
  • Hard Negative Mining: positive pair에 해당하는 margin 안에 negative sample이 포함되어 있는 경우
  • Semi-Hard Negative Mining: positive pair margin 범위 안에 속하진 않지만, negative pair margin 범위 안에도 속하지 않는 경우
  • Easy Negative Mining: negative pair margin 범위에 속하는 경우

<그림 출처: https://www.mdpi.com/2073-8994/11/9/1066/htm>

 

 

 

 

결국, contrastive loss를 이용하여 deep metric learning을 하게 되면 아래 그림 같이, 유사한 데이터들끼리 clustering이 될 것 입니다.

<그림 출처: https://www.sciencedirect.com/science/article/abs/pii/S0925231219306800>

 

 

사실, contrastive loss라는 용어와 개념은 "Dimensionality Reduction by Learning an Invariant Mapping"이라는 논문에서 기원했습니다. 아래 논문의 저자로 우리가 익히 알고 있는 'Yann LeCun' 교수님도 있으시네요.

 

“Contrastive loss (Chopra et al. 2005) is one of the earliest training objectives used for deep metric learning in a contrastive fashion.”

 

 

 

앞서, 소개한 contrastive loss는 contrastive learning의 한 종류입니다.

 

즉, contrastive learning 이라는 것은 데이터들 간의 특정한 기준에 의해 유사도를 측정하는 방식인데, contrastive loss는 positive pair와 negative pair 간의 유사도를 Euclidean distance 또는 cosine similairty를 이용해 측정하여, positive pair 끼리는 가깝게, negative pair 끼리는 멀게 하도록 하는 deep metric learning (or learned metric) 이라고 정리할 수 있습니다.

 

(참고로, contrastive learning을 굳이 deep neural network로 하지 않아도 되지만, deep neural network의 강력한 효용성 때문에 deep neural network를 기반으로한 deep metric learning 방식인 contrastive learning을 하려고 하는 것이 죠.)

 

Positive pair 끼리는 가깝게, negative pair 끼리는 멀게 하도록 하는 deep metric learning (or learned metric) 기반의 contrastive learning 종류는 굉장히 다양합니다. 즉, 유사도측정하는 방식 다양하죠. 예를 들어, infoNCEmutual information이라는 개념기반으로 유사도를 측정합니다. (Triplet loss는 이미 similarity learning에서 간단히 설명한 바 있습니다).  (Mutual information 관련 설명은 다음 글에서 하도록 하겠습니다).

 

 

 

지금까지의 설명을 기반으로 봤을 때 deep metric learning 기반의 contrastive learning이라는 분야를 다룰 때 중요하게 다루어야 하는 개념 두 가지가 있습니다.

 

  1. Similarity Measure (Metric)
    • Contrastive learning은 positive pair 끼리는 가깝게, negative pair 끼리는 멀게 하도록 해주는 것이 목적입니다.
    • 이 때, positive pair라는 것을 상징하는 유사도 값의 종류는 굉장히 다양합니다.
      • ex1) Euclidean distance → Contrastive loss
      • ex2) Mutual information → infoNCE
  2. Dimension Reduction (deep neural network; Nonlinear dimension reduction)
    • Contrastive learning 즉, 데이터들 간의 유사도를 비교하는데 있어서 굳이 deep neural network를 사용할 필요는 없습니다.
    • 하지만, 고차원 데이터들 간의 유사도를 비교하는 것은 쉬운일이 아닙니다.
    • 그래서, 유사도 기준에 알맞도록 고차원 데이터를 저차원으로 dimension reduction 하는 방법이 중요합니다.
    • Deep neural network는 이미지와 같은 고차원 데이터를 저차원 feature로 embedding 할 수 있는 강력한 dimension reduction 기능을 갖고 있습니다. 

(↓↓↓ 딥러닝 외 nonlinear dimensionality reduction 방식 ↓↓↓)

 

 

 

개인적으로는, contrastive learning연구하기 위해서는 두 가지 key word 인, "Metric learning", "Deep Neural Network"에 초점을 맞추는게 중요하다고 생각합니다.

 

 

 

지금까지 Contrasitve learning에 대해 간단히 정리해봤습니다.

이번 contrastive learning에서는 유사도 Euclidean distance를 기준으로 한 contrasitve loss를 소개했습니다.

 

다음 글에서는 contrastive learning 중에 mutual information을 유사도의 기준으로 삼은 다양한 loss에 대해 소개해 보도록하겠습니다. 

 

감사합니다. 

 

 

 

[Reference site]

https://lilianweng.github.io/lil-log/2021/05/31/contrastive-representation-learning.html#contrastive-loss

 

Contrastive Representation Learning

The main idea of contrastive learning is to learn representations such that similar samples stay close to each other, while dissimilar ones are far apart. Contrastive learning can be applied to both supervised and unsupervised data and has been shown to ac

lilianweng.github.io

 

https://slazebni.cs.illinois.edu/spring17/lec09_similarity.pdf

 

 

'Self-Supervised Learning > Contrastive learning (2018~)' 카테고리의 다른 글

1. Mutual information  (0) 2021.10.04

안녕하세요.

이번 글에서는 self-supervised learning이 무엇인지 설명해보려고 합니다.

 

Self-supervised learning는 개념이 어떻게 해서 탄생하게 됐고, 현재 어떠한 방향으로 학습이 되고 있는지 간단히 살펴보겠습니다. 

 

 

 

 

1. Unsupervised learning

Unsupervised learninglabel(정답)이 없는 데이터로 학습하는 모든 방법론을 일컫습니다.

 

<그림 출처:  https://machinelearningknowledge.ai/supervised-vs-unsupervised-learning/>

 

 

라벨이 없이 학습 할 수 있는 사례는 아래와 같이 다양 합니다.

 

 

<그림 출처:  https://www.researchgate.net/figure/Taxonomy-of-Unsupervised-Learning-Techniques_fig1_319952798>

 

 

 

위의 taxonomy에서 "Unsupervised Learning Techniquess" → "Hierarchical learning" → "Deep learning"의 대표적인 사례는 Generative model 중 하나인 GAN이라고 볼 수 있습니다.

 

(↓↓↓GAN 관련 정리된 글↓↓↓)

https://89douner.tistory.com/329

 

5-1. GAN (Part1. GAN architecture)

안녕하세요. 이번 글에서는 최초의 GAN 논문인 "Generative Adversarial Nets"을 리뷰하려고 합니다. 우선, GAN이라는 모델이 설명할 내용이 많다고 판단하여 파트를 두 개로 나누었습니다. Part1에서는 GAN a

89douner.tistory.com

 

 

딥러닝 외에도 기존dimension reduction task에서도 다양한 unsupervied learning 모델들이 사용 됐는데, 그 중에 대표적으로 알고 있는 것들은 t-SNE, auto-encoder 같은 것들이 있습니다. T-SNE, auto-encoder 모두 라벨 없이 데이터의 latent space를 찾는 dimension reduction 기법이라 할 수 있습니다. (auto-encoder는 애초에 처음에 dimension reduction 방식으로 제안이 되었죠)

 

(T-SNE의 embeding 결과 예시↓)

 

 

 

(↓Auto-Encoder의 embedding 결과 예시↓)

<그림 출처:  https://www.youtube.com/watch?v=rNh2CrTFpm4>

 

 

 

 

최초의 CNN 모델인 LeNet(1998)의 창시자 Yann LeCun 교수 또한 평소에 unsupervised learning 방식을 매우 강조해왔습니다. Yann LeCun 교수는 NIPS 2016 Key Note에서는 아래 PPT 내용을 발표하였고,

 

<그림 출처:  https://medium.com/syncedreview/yann-lecun-cake-analogy-2-0-a361da560dae>

 

 

 

같은 해(2016) CMU에서 특히 이를 강조하기도 했죠.

 

 

 

<그림 출처:  https://twitter.com/mldcmu/status/1046869963347283973>

 

 

 

 

 

2. Yann Lecun & Self-Supervised Learning

[2-1. 2018]

2018.09.12 Samsung AI Forum (SAIF) 에서 Yan Lecun 교수 self-supervised learning이라는 용어사용하게 됩니다. (물론 이전에도 사용해 왔을 수 도 있습니다) Yan Lecun은 supervised learning의 단점, reinforcement learning의 단점을 통해 self-supervised learning의 필요성을 주장했습니다.

 

  • Supervised learning의 단점
    • "레이블" 데이터가 많아야 함
    • 학습되지 않은 데이터가 튀어나오면 예측 불가능
  • Reinforcement learning의 단점
    • 실패해도 다시 시도하면 되는 게임에선 가능
    • 현실 세계에서는 실패 자체가 치명적일 수 있어서 적용하기 힘듬
  • Self-supervised learning의 필요성
    • 주변 상황과 조건을 고려해 예측해야 함
    • 실패하기 전에 사고가 난다는 것을 예측해야 함

 

 

(↓↓↓ Yan Lecun이 self-supervised learning을 언급했다는 내용↓↓↓)

https://news.samsung.com/kr/%EC%84%B8%EA%B3%84-%EC%84%9D%ED%95%99%EB%93%A4%EC%9D%98-%EB%88%88%EC%9C%BC%EB%A1%9C-%EB%B3%B8-ai%EC%9D%98-%EB%AF%B8%EB%9E%98%EC%82%BC%EC%84%B1-ai-%ED%8F%AC%EB%9F%BC-2018

 

세계 석학들의 눈으로 본 AI의 미래…‘삼성 AI 포럼 2018’

인공지능(AI)과 딥러닝(Deep Learning) 분야 최고 권위자들이 한국을 찾았다. 9월 12~13일 이틀에 걸쳐 열린 ‘삼성 AI 포럼 2018’에 연사로 나서기 위해서다. 이들은 AI의 고도화된 학습기법인 ‘자기지

news.samsung.com

 

https://www.sait.samsung.co.kr/saithome/event/saif2018.do

 

Samsung AI Forum 2018 | Samsung Advanced Institute of Technology

Samsung AI Forum 2018 | Samsung Advanced Institute of Technology

www.sait.samsung.co.kr

 

 

[2-2. 2019]

2018년도 까지만 해도 self-supervised learning과 관련된 연구들이 진행되고 있었지만, unsupervised learning이라는 용어와 별도로 분리해서 사용하지 않는 등 “self-supervised learning” 용어가 보편화 되지 않았던 것 같습니다.

 

하지만, Yann LeCun 교수는 self-supervised learning이라는 개념이 unsupervised learning 용어와 분별하여 사용할 필요성을 느끼고 2019 트위터에 “self-supervised learning”이라는 개념구체화 하기 시작합니다.

 

 

 

 

(↓↓↓Representation learning용어는 뒤에서도 나옴↓↓↓)

<그림 출처: https://chowdera.com/2021/01/20210109003603375e.html>

 

 

 

 

[2-3. 2020]

2020.11.05 Samsung AI Forum (SAIF) 에서 Yann LeCun 교수 다시 self-supervised learning강조했습니다. 좀 더 구체적인 내용들을 토대로 연설을 시작하면서 왜 self-supervised learning이 필요한지 설명했습니다.

 

<그림 출처: [SAIF 2020] Day 1: Energy-Based Models for Self-Supervised Learning - Yann LeCun | Samsung>

 

 

 

 

3. Self-Supervised Learning (SSL) Motivation

Self-Supervised Learnig을 배우는 이유는 다양하겠지만, 이번 글에서는 대표적인 한 가지 이유에 대해서만 말씀드리겠습니다.

 

Vision 분야에서 딥러닝을 가장 흔하게 사용하는 방법 중 하나는 pre-trained model을 transfer learning 하여 사용하는 것입니다. Transfer learning을 하는 이유는 ImageNet과 같이 방대한 양의 데이터를 미리 학습하여 다양한 이미지들에 대한 feature를 잘 뽑을 수 있게 filter들을 학습시키고, 특정 task에 적용하는 것이죠.

 

보통 초기 layer들은 edge와 같은 특징들을 뽑아낼 수 있게 학습이 될텐데, edge feature를 뽑아 줄 수 있는 filter들을 형성하는데 있어서 이미지 종류는 크게 상관이 없을 확률이 높습니다. 왜냐하면, 강아지의 edge 특징이나 자동차의 edge 특징이나 거기서 거기일 가능성이 크기 때문이죠. 하지만, 마지막 layer에서 추출할 수 있는 semantic 정보이미지 종류마다 다를 수 있습니다. 그래서, 우리가 최종적으로 분류할 task의 이미지 종류가 pre-training 시에 사용됐던 이미지 종류와 다르다면 마지막 layer 부분을 다시 학습(by transfer learning or fine-tuning)하여 최종 task 이미지의 semantic 정보를 적절하게 추출할 수 있도록 setting 해주는 것이죠. 

 

 

여기서 중요하게 알고 넘어가야할 용어가 있습니다. 바로 "upstream task""downstream task"입니다.

 

upstream taskpre-training 단계에서 진행하는 학습 task를 의미하고, downstream tasktransfer learning 시에 적용하고자 하는 target task를 의미합니다.

 

그렇다면, transfer learning 관점에서 왜 self-supervised learning이 필요할까요? 이 질문에 답을 하기 위해서는 기존의 방식들에 대한 의문을 먼저 던져봐야합니다.

 

 

“Why should we use supervised learning method for pre-training model?”

 

  1. Supervised learning 학습 방식이 downstream task에 효과적인 feature를 학습하는데 도움이 되는가?
  2. Pre-trained model을 학습하는데 대용량의 label 정보가 필요한가?

 

사실 위의 두 질문에서 첫 번째 질문에 대한 답이 "supervised learning 방식은 좋지않다"라면 2번에 대한 답은 자연스럽게 "필요없다"가 됩니다. 즉, 우리는 첫 번째 질문에 대한 고찰만 하면 되는 것이죠.

 

그렇다면, 1번 질문을 집중적으로 살펴보면서 self-supervised learnin이 필요한 이유에 대해서 살펴보도록 하겠습니다.

 

"Supervised learning 학습 방식이 downstream task에 효과적인 feature를 학습하는데 도움이 되는가?"

 

 

Mon May 3rd through Fri the 7th

2021 ICLR Keynote

Alexei A. Efros (UC Berkely)

 

(↓↓↓ 위의 슬라이드 자료 ↓↓↓)

https://iclr.cc/media/iclr-2021/Slides/3720.pdf

 

(↓↓↓ 위의 슬라이드 발표영상 ↓↓↓)

 

 

위의 발표내용 중에 제가 문제라고 봤던 부분을 정리해서 설명해보도록 하겠습니다. 여기서 부터는 주관적인 해석이 많이 들어가 있으니 참고해서 봐주시고, 잘 못 됐거나 다른 관점이 있으신 분들은 댓글 남겨주시면 감사하겠습니다.

 

 

기존CNNsupervised learning으로 학습하는 방식에 대해 살펴보겠습니다. CNN 분류 학습의 가장 큰 목표라고 할 수 있는 것은 아래 다양한 의자들을 모두 동일한 클래스인 "의자"라고 분류하는 것 입니다. 즉, 의자의 다양한 형태에 robust하게 분류 할 줄 알아야 하는데, 이를 위해선 의자의 공통적인 feature를 잘 뽑아낼 수 있도록 Conv filter학습되어야 합니다. 그래서, 학습 시 아래 다양한 의자들을 모두 동일한 label로 설정하게 되는 것이죠. 

 

 

 

그런데, 잘 생각해보면 사람들이 유아기 때 저 의자를 구분할 수 있었던 이유는 '누군가가 저 모든 형태 하나 하나씩 의자라고 알려주었기 때문'이 아니라 '먼저 각각의 의자의 특성들을 잘 파악하고 서로 유사한지 아닌지 비교해나가기 때문'인 것을 알 수 있습니다.

 

 

“People don’t rely on abstract definitions/lists of shared properties”

 

 

즉, 애초에 저 '다양한 의자들을 모두 같은 것'이라고 가정하고 출발하는게 '인간이 학습하는 방식'에 맞지 않다고 보는 것이죠.

 

 

 

위와 같은 문제를 해결하기 위해 딥러닝 모델도 먼저 각각의 의자 이미지들에 대한 특성을 잘 파악할 수 있게 학습시키는게 먼저라고 봤습니다.

 

"즉, 해당 이미지들이 무엇인지를 학습하는 것이 아닌 해당 이미지들이 무엇과 유사한지를 살펴보도록 하는게 인간의 학습관점에 더 맞다고 판단한 것이죠."

 

 

 

 

또한, 다양한 의자의 feature들을 잘 표현(representation)해줄 수 있도록 Conv filter가 학습(learning)되는게, downstream task를 위한 representation learning 관점에서 더 좋을 수 있다고 봤습니다.

 

 

 

 

 

4. 앞으로 볼 내용 

Self-Supervised Learning은 아래의 순서대로 발전해 왔습니다.

그렇기 때문에 앞으로 Self-Supervised Learning 카테고리에서는 Pretext task, Contrastive learning, New approach 이렇게 세 가지 서브 카테고리로 나눠서 설명하도록 하겠습니다.

 

<그림 출처:  https://www.youtube.com/watch?v=5BCQ7T2Rw1w>

 

 

+ Recent posts