Heap 은 binary tree 형태로 값을 저장하되, 루트 노드에 max heap이면 최댓값이, min heap 이면 최솟값이 저장되는 자료구조를 말한다. 최댓값이나 최솟값을 구해야 하는 경우, heap이라는 자료구조를 사용하면 굉장히 편하게 구할 수 있다. 우선순위 큐는 기본 큐 구조와 달리 입력 순서가 아닌 우선순위 순서로 자료를 저장하는 자료구조를 말한다. 우선순위 큐 (Priority Queue)는 Heap을 사용하여 구현하는데 우선순위에 따른 오름차순 정렬은 Min Heap으로, 내림차순 정렬은 Max Heap으로 구현할 수 있다. 물론, java 에 Priority Queue 라이브러리가 있기 때문에 바로 사용할 수 있지만, 공부를 위해 라이브러리를 사용하지 않고 짜보았다. 먼저, Min ..

알고리즘을 시작할 때 가장 먼저 배워야 할 것은 정렬, 즉 sorting이라고 생각한다. 버블 정렬, 선택 정렬, 퀵 정렬 등 많은 정렬이 있지만, 내가 사용하는 것은 병합 정렬이다. 병합 정렬(=합병 정렬)의 시간복잡도는 O(nlogn)인데, 왜 이 시간 복잡도가 나오는지 먼저 알아보자. 병합 정렬은, 원소가 저장되어 있는 배열을 계속 쪼개서 길이가 1인 배열을 만들고, 그 이후 정렬하면서 합치는 알고리즘이다. Merge sort 는 binary tree 형태로 쪼개기 때문에 가질 수 있는 최대 깊이는 log n 이 된다. 이때, 각 분할 (n개) 별로 합병을 진행하므로, 총 시간 복잡도는 O(nlogn)이 된다. 이때, quick sort는 최악의 경우 O(n^2)의 시간 복잡도를 가지게 되는데, m..
MSP (Microsoft Student Partner) 란 컴퓨터학과 학생들이 모여서 MS의 기술을 세미나를 통해 소개하는 활동을 하는 대외활동이다. 이 활동을 2학년 2학기부터 했는데 정원은 한 50명쯤 되는 것 같다. 여러 대학교에서 컴퓨터학과 학생들이 모인다. MSP 구성원들은 진짜 개발을 엄청 잘하시고, 다양한 정보를 가지고 계신 갓..도 있는 반면, 나처럼 컴퓨터학과지만 컴퓨터 잘 모르고, 배우고 싶어 하는 사람들도 많다. 일단 이 활동을 통해 모든 분야에 대해서 완벽히 알지는 못해도, 수박 겉핥기 식으로 어떤 분야가 있고 ~한 걸로 코딩하고 ~하는데 쓰인다. 이런 정보나, 어떤 회사가 좋고 어떤 회사가 도둑놈인지에 대한 정보도 얻게 되었다. 특히 여러 분야에 대해 겉핥기 식으로 알게 된 것이..
11월 12일에 MSP 2차 챗봇 세미나를 끝으로 에반젤리즘 활동이 종료되었다. 2차 세미나는 1차에 참석했던 분들께 우선 신청권을 드리고, 1차 세미나에 대기였던 분들께 그다음으로 기회를 드렸다. 그래서 따로 홍보를 하지 않아도 금방 인원이 다 찼다. 1차 때 개론과 간단한 방법에 대해서 설명했다면 2차 때는 개론을 줄이고 실습을 진행하였다. 1시부터 1시30분까지 등록을 받고, 1시 30분부터 2시까지 Microsoft 차장님의 간단한 봇 프레임워크에 대한 인트로가 있었다. 그 이후 6시까지 쭉 실습을 진행하였다. 1차, 2차 세미나를 통해 느낀 점은, No show는 대기자분들께 피해를 주는 거라고 사정이 생기면 꼭 불참 의사를 밝혀달라고 말씀드렸으나 항상 전체 인원의 30% 정도는 no show가..
Distributed Representations of Words and Phrases and their Compositionality (Tomas Mikolov) 논문은 읽는데 2~3주가 걸렸다. 처음으로 발표하게 된 논문이라 완벽하게 발표하고 싶은 욕심이 있는데 읽는 요령이 없어서 시간이 정말 오래 걸렸다. 내용에 수식이 많아서 먼저 올린 논문보다 난이도가 있다. 논문 다운로드 링크는 누르면 연결된다~! Distributed Representations of Words and Phrases and their Compositionality 이번에도 논문의 goal 먼저 살펴보겠다. 이 논문은 word2 vec 중 skip-gram의 vector representation quality를 높이고자 한다...
원래 예전에 사용하던 블로그에 올려두었던 포스팅이다. 학부 연구생 활동을 하면서 연구와 관련된 주제의 논문을 읽고 돌아가면서 발표하는 시간을 가졌었는데, 내가 발표했던 논문은 발표자료까지 공유를 하고, 내가 발표하지 않은 논문은 내용 정리 위주로 포스팅을 하고자 한다. 가장 먼저 올릴 논문은 Linguistic Regularities in Continuous Space Word Representations이고, 저자는 Tomas Mikolov이다. 딥러닝 중에서도 NLP (자연어처리)에 관심이 있는 사람이라면 Mikolov는 잘 알고 있을 것 같다. (word2 vec) 논문 다운로드 링크는 누르면 연결된다. Linguistic Regularities in Continuous Space Word Repr..
이번해 5월에 APAC Machine Learning and Data Science Tech Summit이 상암의 누리꿈스퀘어에서 열렸다. (겨우 찾아낸 사진 ㅠㅠ) Microsoft APAC에서 준비한 행사라서 MSP에게 session assistant로 참여할 수 있는 기회가 주어졌는데, 머신러닝에 원래 관심이 있어서 나도 assistant를 하고 싶다고 신청했다! 그래서 Mission Mars라는 ML studio 체험 세션의 조교가 되었다~ ㅎㅎㅎ Mission Mars는 머신러닝의 이론만 알고, 실제로 해본 적은 없는 사람들 또는 머신러닝 이론도 알고 실제로 사용해 본 적이 있지만 복잡한 코드로(python) 했던 사람들에게 큰 도움이 됐을만한 세션이라는 생각이 든다. 이 세션은 ML studi..
으아 드디어 챗봇 1차 세미나가 끝났다. 모르는 분들 100명 앞에서 발표하는 것은 너무 떨렸다... 우선, 나보다 챗봇을 더 잘 알 것 같았던 현업 개발자분들이 많이 오셨기 때문에 긴장이 너무 많이 돼서 처음 20분 동안은 내가 무슨 말을 하고 있는지도 모르겠었다 ㅋㅋㅋㅋ 스크립트를 쓰고 몇 번 읽고, 파워포인트 발표자 도구에도 적어놨는데 막상 시작하니 머리도 새하얘지고 발표하는 입장에서 노트북을 보고 할 수는 없으니 정말 아무말 대잔치가 아녔을까... 싶다...ㅠㅠㅠ 계속 심호흡도 하고 벌벌 떨면서 하다가 20분 정도 지나니까 적응했는지 긴장이 좀 풀려서 준비했던 말도 많이 하고, 농담도 많이 했던 것 같다. 그런데 문제가 발생했다.... 많은 분들이 피드백으로 지적해주신 부분인데 "동영상 재생의 버..