0%

들어가며

올해 상반기, 나의 최대 관심사는 무엇보다도 졸업(!!!)이었다. 많은 대학원생들이 으레 그렇듯 예상치 못한 사정으로 졸업이 예정보다 반년 늦어졌고 그마저도 더 늦어지겠다 싶어 모든 우선 순위를 제쳐두고 학위 논문을 준비하게 되었다.

그렇게 1월 말부터 논문을 구상하고 작성하며 시간이 흘렀고, 실험 과정에서 굉장히 많은 시행 착오도 겪었다. 두 번의 발표와 도장을 받기위해 교수님들께 메일을 보내고 돌아다니며 모든 서류 제출을 끝내고 나니 6월이 되어있었다. 그렇게 학위 논문을 모두 제출하고 대학원과 관련된 모든 것을 털어내고서야 드디어 석사(진)이 되었다.

그래도 8월까지는 학생이니만큼 학생 신분의 마지막이 지나기 전에 자축의 의미로 본 포스팅을 작성하기로 하였다. 사실, 2년 반 동안의 지난했던 기간의 회고를 할까도 생각했지만 너무 할 말(못 할 말)이 많아지기 때문에 다소 식상하지만 학위 논문을 작성하면서 정리했던 인공지능의 발전사와 개략적인 개념을 최대한 많은 사람들이 이해할 수 있도록 포스팅에 설명해보기로 했다.

Read more »

들어가며

딥러닝을 입문하며 자연스럽게 파이썬을 함께 공부하게 되었고, 지금은 주 언어로 사용하고 있다. 하지만 나는 파이썬에 대해 얼마나 알고 있을까?

C/C++ 같은 컴파일 언어만 사용했던 나에게 파이썬은 꽤 난해하게 다가왔다. 사실, 파이썬을 사용하면서 느낀 생각은 “파이썬의 철학(The Zen of Python)과 많이 다른데..?” 였다.

파이썬 철학의 핵심 내용은 명확한 그리고 가급적이면 유일한 하나의 방법이 존재한다(There should be one-- and preferably only one --obvious way to do it)이며, 이에 따르면 규칙이 굉장히 엄격한 언어라고 한다. 그렇지만 나에게 파이썬의 처음에는 굉장히 자유로운 언어로 보였다.

Read more »

바둑에 대해서 잘은 모르지만 그로부터 유래된 단어는 간혹 일상에서 사용하곤 한다.
바둑 용어 중에 복기라는 말이 있다.
대국이 끝나고 승패가 결정되었음에도 내용을 검토하기 위해 상호 간 처음부터 두었던 순서대로 다시 두어 재연함 뜻하는 단어다.
복기로부터 바둑 기사들은 대국에서 잘한 수와 잘못했던 수, 상대방의 전략 등을 살펴본다.
프로 9단 바둑기사 이창호는 다음과 같이 말할 정도로 복기를 중요시 했다고 한다.

승리한 대국의 복기는 이기는 습관을 만들어주고, 패배한 대국의 복기는 이기는 준비를 만들어준다

조훈현 9단 또한 복기가 가지않았던 길을 갈 수 있게 한다 하였으며, 패배로 인해 아플수록 더 예민하게 들여다보고 복기해야한다는 말을 했더랬다.
이 바둑기사들이 많은 수를 순서대로 기억하여 복기를 할 수 있는 이유는 한 수 한 수에 집중하고 의미를 부여하여 두었기 때문이라고 한다.

Read more »

Migration to Meta Sheet


U-Net: Convolutional Networks for Biomedical Image Segmentation

MICCAI 2015


Paper

  • https://arxiv.org/pdf/1505.04597.pdf

Source Code Repository

  • Official Model: https://lmb.informatik.uni-freiburg.de/resources/opensource/unet/
    • Framework: Caffe
  • Reproduce Model: https://github.com/jakeret/tf_unet
    • Framework: Tensorflow
    • Paper: https://arxiv.org/pdf/1609.09077.pdf in Astronomy and Computing 2017
    • Documentation: https://tf-unet.readthedocs.io/en/latest/installation.html
  • Reproduce Model: https://github.com/zhixuhao/unet
    • Framework: Keras
  • Reproduce Model: https://github.com/milesial/Pytorch-UNet
    • Framework: PyTorch
Read more »

Complete Binary Tree

Tree에 대한 기본적인 설명은 루비콘 팀 Martin Kim의 포스트를 참조한다. 🙇

Ref: https://blog.martinwork.co.kr/theory/2018/09/22/what-is-tree.html

추가적으로 Tree에 대해 부가설명을 덧붙인다.
Tree의 정의는 다음 2가지를 따른다.


1. A root node
2. The remaining nodes are partitioned into $n(n \geq 0)$ disjoint sets $T_1, T_2, … , T_n$ ($T_i$ : subtrees of the root)


즉, 루트 노드가 존재하며, 0개 이상의 서브트리로 분리된 노드가 존재해야 한다.
이 중 Full Binary Tree는 Depth가 $k$일 때, 총 노드의 개수는 $2^k - 1$개인 트리이며,
Complete Binary Tree는 Depth가 $k$인 Full Binary Tree를 왼쪽에서부터 순차적으로 읽었을 때, $k-level$에서 Complete Binary Tree의 총 노드 수 $n$의 인덱스를 가진 노드가 존재하는 것을 말한다.

이 때, $k =\lceil\log_{2}(n + 1)\rceil$이 성립한다.
Complete Binary Tree는 마지막 레벨을 제외하고 모든 레벨이 채워져 있으며, 마지막 레벨의 모든 노드는 가능한 한 가장 왼쪽에 있기 때문에 공간의 낭비가 없어 배열로 구현하는 것이 효율적이다.

Read more »
//