본문 바로가기

전체 글37

[면접 꿀팁] Probability와 Likelihood의 차이점 안녕하세요, 오늘은 머신러닝을 한다면 한번쯤은 들어보셨을 Probability와 Likelihood에 대해 비교하며 설명해드릴까 합니다. 너무 중요한 개념인만큼 정확히 이해해놓는 노력이 필요할 것 같습니다. 그럼 개념과 어떤 차이점이 있는지 리뷰해보겠습니다. Probability (확률) Probability는 특정 사건이 일어날 확률 확률은 어떤 사전 지식이나 가정을 바탕으로 어떤 사건이 발생할 가능성을 측정하는 값입니다. 이 값은 0과 1사이의 수로, 0은 불가능함을, 1은 확실함을 나타냅니다. 설명이 조금 직관적이지 않나요? 몇가지 예를 들면 금방 이해하실 것 같습니다. 동전을 던졌을 때 앞면이 나올 확률은 1/2이다. 주사위를 던졌을 때 3이 나올 확률은 1/6이다. 로또 1등에 당첨될 확률은 1.. 2023. 4. 11.
[논문 리뷰] Segment Anything 설명 (코드 살짝 포함) 안녕하세요, 오늘은 따끈따끈한 Meta의 논문 - Segment Anything에 대해서 소개하고자 합니다! 데모만 하고도 너무 두근거렸는데 그 이유는 제가 회사에서 하는 일과 관련이 매우 높기 때문입니다. 제가 직접 개발했다면 얼마나 좋았을까 하는 마음도 들지만 이렇게 리뷰라도 할 수 있어 참 행복합니다 논문 링크: Segment Anything 깃허브 링크: Segment Anything Github 그럼 리뷰 시작하겠습니다 Introduction 다들 "Foundation models"이라고 들어보셨나요? 분야를 막론하고 거대한 데이터셋으로 Pre-training 시킨 거대한 모델을 foundation model이라고 부릅니다. 이 모델들은 해당 task에 대해 엄청난 generalizability.. 2023. 4. 9.
[기술 잡담] 니어바이쉐어(Nearby Share) 사용법 - 핸드폰과 컴퓨터 파일 전송 방법 안드로이드 유저분들 안녕하세요, 윈도우 쓰시는 분들은 핸드폰과 컴퓨터 사이에 파일 전송을 어떻게 하시나요?? 저는 보통 카카오톡이나 이메일을 사용하는데 아주 불편하다고는 말하기 어렵지만 파일을 많이 전송하거나 대용량 파일을 주고 받을 때는 늘 불편함을 호소했습니다... 아이폰 유저분들은 에어드랍이라는 훌륭한 파일 전송 수단이 있지만 안드로이드(주로 갤럭시)를 사용하시는 분들은 아마 저와 같은 불편함을 한번쯤 느끼셨을 것 같습니다. 혹시 삼성 노트북을 쓰신다면 퀵쉐어가 있겠지만 삼성 생태계에서만 사는 분들이 많지는 않을 것 같습니다. 그래서 답답한 여러분들을 위해 구글에서 친히 니어바이쉐어(Nearby Share) 베타 서비스를 출시했습니다!! 지금부터 어떤 준비물이 있는지, 어떻게 쓰는지 차근차근 설명해.. 2023. 4. 7.
[일상 잡담] AI 커리어를 이어나간다는 것 안녕하세요, 오늘은 AI 연구? 개발? 기획? 아무튼 AI 전문가로서 커리어를 이어나가는 것에 대한 저의 짧은 생각을 써보려 합니다. 그야말로 AI가 세상을 놀라게 하는 대국면을 맞았습니다. ChatGPT, Diffusion model과 같은 생성 AI들이 초거대 데이터와 초거대 모델을 양손에 쥐고 득세하고 있습니다. 알파고는 정말 센세이셔널했지만 알파고의 성공이 그늘에 가려질 만큼 더욱 혁신적인 인공지능이 대중들 앞에 선보여졌습니다. 알파고 이외에는 인공지능에 별다른 관심도 없던 저희 가족들도 ChatGPT를 종종 언급하게 됐고, Stable Diffusion이나 Midjourney가 그린 그림을 보여드리면 이게 진짜인지 가짜인지 분간이 안 간다며 신기해하고 있습니다. 진정 바야흐로 A(G)I의 시대입.. 2023. 4. 6.
[PyTorch] nn.Module에 대한 이해 안녕하세요, 혹시 PyTorch를 쓰시다 보면 습관적으로 nn.Module을 상속 받고 시작하지 않으시나요? 오늘은 타성에 젖은 상속 말고, nn.Module이 뭔지 이해하고 써보면 좋겠습니다. 설명해보겠습니다. nn.Module 정의 먼저 공식 Docs에 있는 torch.nn.Module부터 읽어보시죠. 한마디로 모든 모델의 근간이 되는 기본 클래스입니다. 우리가 직접 정의하는 모든 모델은 이 녀석을 상속 받고 시작해야만 forward, backward 등을 편하게 수행할 수 있다는 소리입니다. import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): # 여기서 nn.Module을 상속 받는다 def __init__(se.. 2023. 4. 3.
[면접 꿀팁] Python에서 메모리를 어떻게 관리하는가? 안녕하세요, 요즘은 인공지능을 다루는 분들이 늘어나고 또한 금융이나 비개발자분들께서도 배우기 쉬운 언어로 파이썬을 선택함에 따라 파이썬은 너무나 대중적인 언어가 되었습니다. 특히 전문적으로 개발하시는 분들은 프로그램의 메모리 관리에 대해 한번쯤은 문제를 겪으셨을텐데요. 오늘은 파이썬에서 가비지 콜렉션(Garbage Collection)이라는 개념에 대해 간단히 다뤄보겠습니다. Python의 메모리 관리 먼저, 파이썬은 자동으로 메모리를 관리하는 고급 프로그래밍 언어입니다. 이것은 개발자가 직접 메모리 할당 및 해제를 관리하지 않고도 메모리 관리를 자동으로 처리할 수 있다는 것을 의미합니다. 파이썬에서 메모리 관리는 참조 계수(reference counting) 기반으로 이루어집니다. 이는 객체가 생성될 .. 2023. 4. 2.
[AI 소식] Midjourney v5로 만든 사람의 노화 과정 안녕하세요, 오늘은 이미지 생성 분야에서 가장 유명한 회사 중 하나인 Midjourney에서 최근에 공개한 Midjourney v5와, 비디오 생성을 앞세우고 있는 Runway 서비스를 활용해 한 어린 여자아이가 늙어가는 과정을 비디오로 생성해놓은 것을 봤습니다. 몇번을 돌려봤는지 기억이 나질 않습니다. 너무 생성 수준이 높아 마치 사진을 찍어놓은 것 같아 놀랐고, 얼마 전 돌아가신 할머니 생각이 나서 마음이 힘들기도 했습니다. AI 업계에 계신다면 최근의 생성 모델의 발전 속도는 감히 상상하기 어려웠다는 점에 공감하실 것 같습니다. 저 또한 이렇게 빠르게 발전할 지 상상도 못했습니다... 이번 영상은 christianortner라는 유저분이 만드신 작품입니다 (원본 게시물 링크). 제가 생각했던 부분은.. 2023. 4. 1.
[면접 꿀팁] 함수형 프로그래밍(Functional Programming)이란? 함수형 프로그래밍(Functional Programming)은 백엔드/프론트엔드를 막론하고 자주 질문 받으며 실제로 현업에서도 자주 다루는 개념입니다. 함수형 프로그래밍에 대해 설명해보도록 하겠습니다. 함수형 프로그래밍이란? 함수형 프로그래밍(Functional Programming)은 프로그래밍 패러다임 중 하나로, 순수 함수와 불변성(Immutable)을 강조하며, 프로그램의 상태 변경을 최소화하는 것을 목표로 합니다. 함수형 프로그래밍은 수학적 함수의 개념에 기반을 두고 있으며, 이를 통해 코드의 간결성, 모듈성 및 예측 가능성을 높일 수 있습니다. 함수형 프로그래밍의 주요 특징 순수 함수(Pure functions): 순수 함수는 동일한 입력에 대해 항상 동일한 출력을 반환하며, 외부 상태에 영향.. 2023. 3. 31.
[면접 꿀팁] 배열(Array)과 링크드 리스트(Linked list)의 특징 안녕하세요? 오늘은 신입 개발자 면접에서 빈번하게 등장하는 배열과 링크드 리스트의 특징을 파악하고 비교해보겠습니다. 일단, 배열과 링크드 리스트는 데이터를 저장하고 관리하는 데 사용되는 두 가지 기본적인 자료 구조입니다. 배열(Array) 연속된 메모리 공간에 데이터를 저장합니다. 인덱스를 사용하여 원소에 빠르게 접근할 수 있습니다. O(1)의 시간 복잡도를 가집니다. 고정된 크기를 가지며, 크기 변경이 어렵습니다. 미리 할당된 메모리 크기를 초과하면 새로운 메모리 공간을 할당하고 데이터를 복사해야 합니다. 원소를 삽입하거나 삭제할 때, 원소들을 이동시켜야 하므로 시간이 오래 걸릴 수 있습니다. 일반적으로 O(n)의 시간 복잡도를 가집니다. 메모리 사용이 효율적입니다. 각 원소는 인덱스로 접근되며, 추가.. 2023. 3. 31.
[PyTorch] 간략한 자기 소개 안녕하세요. 딥러닝을 연구하는 많은 분들께서 PyTorch를 쓰고 계신 걸로 알고 있습니다. 저는 2017년말부터인가 이것을 쓰기 시작했는데요, 그동안 많은 시간을 들여 코딩했지만 언제부터인가 각 기능이 정확히 어떻게 동작하는지 알고 싶어졌습니다. 그래서 시간 나는대로 기본적인 내용부터 설명해볼까 합니다. 저는 개인적으로 PyTorch Forum에서 활동을 하고 있는데요, 말하기 민망할 정도로 가끔 들어가서 다른 사람들의 문제를 함께 고민하고 해결하는 시간을 갖습니다. 답변을 200개 정도 달았는데, 생각보다 채택률이 저조한 이유는 물론 모든 답변이 문제 해결로 이어진 것은 아니지만 문제를 해결한 답변에 체크를 안해주시는 분들이 꽤 많은 것 같아 손해보는 느낌이 듭니다... 뭐 아무튼 앞으로도 꾸준히 활.. 2023. 3. 30.
[논문 리뷰] Graph Convolutional Network (GCN) 오늘은 Graph Convolutional Network에 대해 소개하겠습니다. 우리 살아가는 인간관계처럼 우리 주변에는 수많은 그래프가 있고 그것을 잘 이해하기 위한 획기적인 모델입니다. 본 글은 Semi-Supervised Classification with Graph Convolutional Network 논문을 바탕으로 설명하는 글입니다. Introduction 우리가 다루는 많은 정보는 graph의 형태로 이해할 수 있는데, 이 구조를 기존의 Convolution 또는 Recurrent Model로는 제대로 다루기 어렵습니다. 그 이유는 크게 세가지가 있는데, 격자(grid) 구조로 그래프를 다룰 수 없다. 그래프란 이미지나 다른 데이터와는 달리 그 구조적인 형태가 매우 자유롭다 서로 다른 두 .. 2023. 3. 30.
[논문 리뷰] Mixed Precision Training (MP, AMP) 오늘은 모델의 파라미터를 32-bit가 아닌 16-bit로 표현하여 배치 사이즈를 늘리고, 그에 따라 학습 속도를 빠르게 할 수 있는 Mixed Precision Training이라는 기술에 대해 설명하도록 하겠습니다. 더불어, 이 과정에서 발생할 수 있는 문제를 Adaptive 방식으로 해결하는 과정과 나아가 Automatic Mixed Precision(AMP)이 뭔지 다루도록 하겠습니다. 혹시 논문부터 읽고 싶으신 분은 Mixed Precision Training을 참고하세요 Mixed Precision의 배경 Single Precision(Floating Point 32, FP32)는 과연 딥러닝 학습에서 양보할 수 없는 선일까? 만약 Half Precision(Floating Point 16, .. 2023. 3. 29.