페이지

2020년 1월 25일 토요일

2019년 결산 및 2020년 계획 짜기

2019년 결산


나는 아직 학생이니까 방학과 학기 별로 정리해보았다.

겨울방학

우선 계절학기로 6학점을 들었다... 철학과 윤리, 인간언어란 무엇인가였는데 올출에 시험도 열심히 쳤는데 C+C+을 받았다. 흑흑... 잘은 모르겠는데 철학과 윤리 교수님께 듣기로는 일단 쓸데없는 문장이 너무 많아서 절반은 긋고 시작하셨다고 한다. 나름 열심히 써놓았는데 말이징...

그렇게 계절학기를 열심히 들으며 피아노 인 연세 정기연주회를 위해 점심마다 연습을 했다. 알찬 1월이었다고 생각한다.

2월에는 학과 엑스맨을 했다. 14학번이 19학번 입학하는데 엑스맨 했다는 괴담이 종종 돌곤 하지 않는가? 그게 나였던 것이다...! 사실 엑스맨은 굉장히 논란거리 중 하나다. 결국 속이는 것이 아닌가? 결국 놀고 싶어서 들어가는 것 아닌가? 사실 나도 엑스맨에 그렇게 긍정적인 의견을 가지고 있지는 않지만 일단 해보고 비판을 하던 옹호를 하던 하고 싶었다. 지금의 생각은 존재 자체는 부정적이나 왜 하는지 알겠다 정도?

그리고 생일은 태부와 함께 보내고 연구실에서 제주도로 IPIU를 갔다왔다. 인생 첫 피티도 시작했다.

1학기

학기가 시작하자마자 정기연주회를 했다. 피티와 태권도부 운동을 열심히 했다. 소종을 열심히하고 수업을 열심히 들었다.

졸업사진을 2번이나 찍었다. 복학하고 중앙동아리(피아노 인 연세), 체대동아리(태권도부), 공대동아리(풀씨)를 다 했더니 아는 사람이 생각보다 많았다. 집돌이에 아싸라서 잉여잉여할 줄 알았는데 아니었다.

여름방학

KCCV(Korean Conference for Computer Vision)이 우리 학교에서 열려서 교수님을 이것저것 도와드렸다. 밍쉔의 수업과 함께 대학원에 들어가기 직전, 학회, 컨퍼런스 그리고 저널에 대해서 이해하는 데 도움이 되었던 것 같다.

그리고 이것저것 일들을 좀 많이 벌리기 시작했다. 2학기에 쿠콰쾅했던 것의 시초가 된다. 선종이 소개로 승재형을 만나 창업도 하고, 이은이 교수님도 처음으로 뵙고, 이진호 교수님도 처음 뵙고, 버지니아 친구도 처음으로 만났다.

2학기

씡나고 재밌게 창업을 했다.

이전까지의 창업은 개발자, 디자이너만 모여서 돈 없이 제품만 있었다면 이번에는 제품 없이 돈만 있었다. 역시 창업이란 어려운 일인 것 같다. 처음으로 팀 단위의 외주를 하면서 스트레스도 많이 받았다.

그래도 계속 열심히 이것저것 했다.

개인연구는 Video Summarization이었다. 긴 영상을 자동으로 짧게 요약하는 건데 연구실에서는 주로 야구 영상에서 highlight를 뽑아내는 걸 했다. DPP기반의 diversity loss가 뭔가 돌파구가 될 거라고 생각하고 회사에서도 많이 시도했는데 그냥 딱 diversity에 유용한 도구 그 이상도 이하도 아니었다.

창업은 뭐 이것저것 많이 시도했다. 외주하면서 돈도 좀 벌어놓고 이런 저런 플젝도 해보고... 그치만 뭔가 딱 정해진 목표, 정해진 할일이 없어서 힘들었다. 능력있는 사람들을 모아놓은 것은 좋지만 원하는 바를 다 만족시켜가며 회사가 돈까지 버는 것은 힘든 일인 것 같다.

의대 연구실은 그나마 그냥 일을 했다. 쥐의 뇌에 전극을 꽂아서 나온 calcium image에서 활성화된 뉴런을 찾아내는 일이었다. 이 쪽은 성능을 끌어올리는 건 실패하고 하드웨어 가속에만 성공했다.

OOP 조교와 과외는 그냥저냥 즐겁게 했다. 이진호 교수님과 함께한 OOP 조교는 특히 재미있었다. welcome to CS! 같은 느낌 ㅋㄷㅋㄷ

랩 메이트들이 CVPR을 제출하는 걸 보며 자극을 좀 많이 받았다.

겨울방학

결국 번아웃이라는 것이 찾아왔다. 개인연구, 창업, 의대 연구실 파트타임 참여 등등 아무것도 제대로 결과가 안 나와서 좀 우울했다.

크리스마스 즈음에는 가족의 선물을 준비하다가 역시 내가 소중히 여기는 것은 이런 것이라는 걸 깨달았다.

마침 연구주제도 바꾸며 바빠져서 다른 일들을 정리하기로 마음 먹었다. 전전회사 팀장님(이제는 이사이신)과 만나서 얘기해본 결과 context switching 비용이라는 게 굉장히 크다는 이야기를 했다. 그리고 내가 지금 벌고 있는 돈은 푼돈이라는 것도. 여러 개의 일을 한다면 가지 뻗기를 해야지 여러 곳을 동시에 파기 시작하는 건 좀 아닌 거 같다는 인사이트도 얻었다.

한 학기 정도는 이렇게 해본 것도 좋은 경험이지만 이젠 역시 개인 연구에 좀 집중을 해야할 것 같다. 나는 context switching 비용 없이 여러 개를 멀티태스킹 할 수 있는 종류의 천재는 아니었던 것 같다.

2020년 계획
  • [ ] 나만의 시그니쳐 요리 만들기
  • [ ] 탑티어(ICCV, CVPR, ECCV) 논문 accept 되기
  • [ ] 블로그 글 열심히 써서 방문자 수 일500 찍기
  • [ ] 엄마아빠 돈다발 선물하기
  • [ ] 텝스 공부 및 응시하기
  • [ ] 글로벌 펠로우십 따내기
  • [ ] 월화목금 10to7 공학관 지박령
  • [ ] 월화목금 8to11 운동

Pytorch의 Autograd를 제대로 이해하기

들어가며

근래에 NAS(Neural Architecture Search)로 주제를 바꾸며 pytorch를 더 자유자재로 구현할 필요성이 생겼다.

그런데 공부를 하다가 autograd 관련 예제의 결과를 예측하는데 실패한 것들이 있어서 정리할겸 이 글을 쓴다.

우선 Autograd의 동작을 이해하고 싶다면 아래의 동영상을 추천한다.


이를 이해하고 나면 몇 개의 예제를 살펴보자.

예제1 - scalar value와 backward

위의 예제는 심플하다.

예제2 - chain rule + scalar backward

마찬가지로 크게 이해가 되지 않는 부분은 없다.
chain rule의 적용에 관련해서는 아래 계산을 첨부한다.


예제3 - vector backward

개인적으로 잘 이해가 되지 않았던 부분은 이 부분이다.

backward에 넣어주는 gradients가 무엇을 의미하는지, 그리고 x.grad의 결과값은 왜 저렇게 나오는지 이해하기가 어려웠다.

그래서 torch.autograd.backward - pytorch docs를 참조해보았더니 아래와 같이 설명이 나왔다.




Autograd and Jacobian Matrix

Jacobian Matrix는 m 차원에서 n 차원으로 가는 함수 f가 있다고 할 때 각각의 차원에 대해 모든 편미분 값을 모아놓은 matrix이다.

그리고 grad_tensors는 이 Jacobian Matrix에 곱해주는 어떤 값이라고 할 수 있다. 이는 여러 방향으로 응용될 수 있다.

learning_rate, chain rule 등등에 사용가능하기 때문이다.

결론

사실 블로그 글은 항상 시작할 때는 잘 써야지 하다가 마지막에 가면 그냥 대충 쓰게되는 것 같다.

이 요약 글을 보고 잘 이해가 안 되면 맨 처음의 동영상이나 참고자료를 잘 보면 될 것 같다.

참고자료

2019년 7월 27일 토요일

블로거(구글 블로그)에서 예스닉 호스팅 도메인 사용하기

블로거(구글 블로그)에서 예스닉 호스팅 도메인 사용하기

들어가기 전에

이런 사람들을 위한 글입니다

  • DNS 시스템에 대한 기본적인 이해가 있음 > CNAME record
  • 서브 도메인을 구성하고 싶음 > 최상위도메인(www), 서브도메인

이런 것을 목표로 합니다

  • github page(github.io)에서 최상위도메인을 사용
    • https://yangspace.co.kr 에서는 github page를 이용해 호스팅하는 CV(Curriculum Vitae)를 보여줍니다
  • blogger에서 서브도메인을 사용

사용되는 서비스들

  • github page: 깃헙에서 제공하는 호스팅 서비스입니다
  • blogger: 구글에서 제공하는 블로그 서비스입니다
  • 예스닉: YesNic은 가비아 등과 같은 한국의 도메인 등록기관입니다

전체 Architecture

enter image description here

예스닉 네임서버 고급설정

custom domain을 이용하는 방법은 일반적으로 두 가지로 나뉩니다.
  • 도메인 등록기관에 네임서버를 변경
  • 도메인 등록기관의 네임서버에 레코드를 추가
전자의 경우 일반적으로 네임서버를 직접 만들어 쓰는 곳에서 사용하고 대부분의 개인은 후자를 이용하게 됩니다.
https://www.yesnic.com/?_task=ns&_action=form
위의 URL을 클릭하면 아래와 같은 화면으로 이동하게 됩니다.
enter image description here
아래와 같이 설정이 가능합니다.
enter image description here

github page를 최상위 도메인으로 설정하기

예스닉에서 해야하는 일은 다음과 같습니다.
이 글 에서는 A record를 이용해서 github page에 최상위 도메인을 할당합니다. 호스트명은 비워두고 github에서 운영하는 DNS 서버의 IP 주소를 할당하면 됩니다. 아래의 4개 중 최소 2개를 적어주시면 됩니다. 안정적인 서비스를 위해서는 4개를 모두 적는 것이 권장됩니다.
  • 185.199.108.153
  • 185.199.109.153
  • 185.199.110.153
  • 185.199.111.153
자세한 사항은 github help에서 확인이 가능합니다.
다음 github page의 repository setting에 가서 custom domain을 설정해야합니다.
몇 분이면 설정이 완료됩니다.
enter image description here

blogger를 서브 도메인으로 설정하기

blogger에서는 CNAME 레코드를 이용해서 셋팅합니다. 두번째 서브 도메인의 경우 authentication 확인을 위해 사용되는 서브 도메인으로 함께 설정해주어야합니다.
enter image description here

마치며

이제 설정이 완료되었습니다!
https://yangspace.co.kr 로 CV에 접근할 수 있고, https://blog.yangspace.co.kr 로 Blog에 접근할 수 있습니다!