본문 바로가기

전체 글150

선형회귀 (Linear Regression)에 대한 여러 접근법 1. 선형회귀 (Linear Regression) 선형회귀는 입력 $\textbf{x} \in \mathbb{R}^{d \times 1}$와 출력 $y \in \mathbb{R}$를 식 (1)과 같은 선형 관계로 모델링하기 위한 회귀분석이다. $$\begin{equation} y = \textbf{w}_1 \textbf{x}_1 + ... \textbf{w}_d \textbf{x}_d + b = \textbf{w}^T \textbf{x} + b \tag{1} \end{equation}$$ 위의 식에서 $\textbf{w} \in \mathbb{R}^{d \times 1}$와 $b \in \mathbb{R}$는 선형회귀 모델의 매개변수이다. $N$개의 데이터를 포함하는 데이터셋 $\mathcal{D} = .. 2023. 12. 9.
2023년 11월 최신 프로그래밍 언어 순위 1. 2023년 11월 TIOBE Index TIOBE Index는 아래의 3가지 지표를 주로 반영하여 프로그래밍 언어의 순위를 설정한다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 일반적으로 프로그래밍 관련 강좌에서는 프로그래밍과 관련된 개념을 설명하기 위해 C와 Java처럼 전통적인 언어를 자주 다루기 때문에 TIOBE Index에서는 전통적인 프로그래밍 언어의 순위가 높게 설정되는 경향이 있다.. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 인터넷 검색량을 기반으로 계산.. 2023. 12. 7.
확률에 대한 Frequentist와 Bayesian 접근, 그리고 MLE와 MAP 1. 확률 (Probability) 우리는 일상 생활에서 "확률적으로", "확률이 높다" 등과 같이 확률에 기반한 서술을 많이 듣는다. 그러나 "주사위를 던졌을 때 1이 나올 확률은 1/6이다"라는 하나의 명제는 빈도주의 (frequentist)와 베이지안 (Bayesian)이라는 두 가지 해석이 존재한다. 첫 번째는 아래와 같은 빈도주의 해석이다. 주사위를 60,000번 던지면 1이 10,000번 나온다 그러나 두 번째의 베이지안 해석은 같은 확률에 대해 빈도주의 해석과는 조금 다른 관점을 갖는다. 베이지안 해석에서 확률은 아래와 같이 어떠한 사건의 발생에 대한 가능성을 의미한다. 주사위를 던질 때 1이 나오는 사건은 1/6의 확률로 발생한다 이 글에서는 빈도주의와 베이지안 접근에 대한 개념, 그리고 .. 2023. 12. 5.
파이썬을 이용한 ChatGPT API 호출 1. Open AI API 키 발급 먼저 ChatGPT를 개발한 OpenAI에 접속하여 회원가입을 한다. OpenAI 홈페이지에서 [그림 1]과 같이 왼쪽 사이드바에서 API Keys 메뉴를 클릭한다. 그 다음 API keys 메뉴에서 Create new secret key 버튼을 클릭하여 API 키를 발급 받는다. 발급된 API 키는 유출되지 않도록 주의해야한다. 2. 파이썬을 이용한 ChatGPT API 호출 OpenAI에서는 OpenAI에서 개발한 인공지능 모델을 쉽게 사용할 수 있도록 파이썬 OpenAI 패키지를 제공하고 있다. OpenAI 패키지는 아래의 pip 명령어를 이용하여 다운받을 수 있다. pip install openai​ 파이썬 OpenAI 패키지를 다운 받은 후에 아래와 같이 파이.. 2023. 12. 3.
[그래프 이론] 1. 그래프 (Graph)의 정의와 기본 속성 1. Graph의 수학적 정의 수학에서 graph는 $G = (\mathcal{V}, \mathcal{U})$로 표현되는 쌍으로 정의되며, $\mathcal{V}$와 $\mathcal{U}$는 각각 node (또는 vertex)와 edge의 집합이다. 최근 데이터과학이나 머신러닝에서는 각 node와 edge에 대한 속성을 나타내는 node-feature 행렬 $\textbf{X}$와 edge-feature 행렬 $\textbf{E}$를 추가한 attributed graph $G = (\mathcal{V}, \mathcal{U}, \textbf{X}, \textbf{E})$를 다루기도 한다. 그러나 고전적인 그래프 이론에서는 일반적으로 속성 행렬을 고려하지 않기 때문에 특정한 언급이 없다면, 속성 행렬이 .. 2023. 6. 16.
2022년 2월 최신 프로그래밍 언어 순위 1. 2022년 2월 TIOBE Index TIOBE Index에서는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 산정한다. 프로그래밍 언어의 순위는 아래의 기준을 바탕으로 결정된다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 .. 2022. 2. 20.
[머신 러닝 이론] - 다양한 관점에서의 머신 러닝 머신 러닝 분야의 엄청난 발전과 함께 최근 머신 러닝을 활용하면 무엇이든지 가능한 것처럼 이야기하는 연구나 제품들이 많이 등장하고 있다. 그러나 머신 러닝은 장단점이 존재하며, 실제 머신 러닝을 실용 기술 개발 단계에서 적용하다보면 기존의 방법론보다 비효율적인 경우도 많이 접하게 된다. 머신 러닝의 장단점과 응용 가능 분야를 이해하기 위해, 이 글에서는 머신 러닝이 무엇이고 어떠한 점이 새로운 것인지 다양한 관점에서 소개한다. 1. 데이터 과학 관점에서의 머신 러닝 머신 러닝을 한 문장으로 정의하자면 '데이터로부터 예측 알고리즘을 학습시키기 위한 모든 구성 요소'이다. 즉, 머신 러닝의 가장 기본적인 요소 중 하나는 '데이터'이다. 컴퓨터 과학에서 데이터를 기반으로 연산을 수행하는 모든 것을 데이터 과학.. 2021. 12. 14.
2021년 9월 최신 프로그래밍 언어 순위 2021년 9월 TIOBE Index TIOBE Index에서는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 산정한다. 프로그래밍 언어의 순위는 아래의 기준을 바탕으로 결정된다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 인기 .. 2021. 9. 14.
[머신 러닝/딥 러닝] 그래프 어텐션 네트워크 (Graph Attention Network) 구조 및 설명 1. Self-Attention Mechanism Graph attention network (GAT) [1]를 이해하기 위해서는 먼저 self-attention mechanism에 대한 이해가 필요하다. 아래의 그림 1은 구글 AI 블로그의 예제를 이용하여 자연어 처리에서 self-attention이 어떻게 정의되고 이용되는지를 보여준다. 자연어 처리에서는 'it', 'them', '그것'과 같이 문맥을 고려해야 단어가 무엇을 의미하는지 알 수 있는 경우가 많다. 그림 1의 예제에서도 'it'이라는 단어가 'animal'을 의미하는지 'street'을 의미하는지 알기 위해서는 같이 입력된 문장 전체를 고려해야 한다. Self-attention은 어떠한 입력을 이해하기 위해 같이 입력된 요소들 중에서 무.. 2021. 8. 1.
[최적화] 입자 군집 최적화 (Particle Swarm Optimization, PSO)의 개념과 구현 1. 군집 기반 최적화 (Swarm-Based Optimization) 군집 기반 최적화는 수리적 최적화의 한 방법론으로써, 군집 기반 최적화에서는 여러 개의 optimizer가 서로 정보를 교환하며 동시에 최적화를 수행한다. 그림 1은 경사하강법 (gradient descent method)와 같은 single agent optimization과 PSO와 같은 swarm-based optimization의 차이를 개념적으로 보여준다. Single agent optimization에서는 주어진 법칙에 따라 최적해를 찾아간다. 대표적으로 경사하강법에서는 함수의 gradient를 따라 최적해를 찾아간다. 반면에 PSO와 같은 swarm-based optimization에서는 주어진 법칙에 더하여 agent .. 2021. 7. 25.
2021년 7월 최신 프로그래밍 언어 순위 2021년 7월 TIOBE Index TIOBE Index에서는 프로그래밍 언어의 인기와 관련된 수치를 기반으로 프로그래밍 언어의 순위를 산정한다. 프로그래밍 언어의 순위는 아래의 기준을 바탕으로 결정된다. 해당 프로그래밍 언어를 이용하는 엔지니어의 수: 과거에 프로그래밍 언어를 배웠던 엔지니어들도 포함되기 때문에 이 수치는 프로그래밍 언어의 과거부터 현재까지의 인기를 간접적으로 포함한다. 해당 프로그래밍 언어 관련 강좌 및 홈페이지의 수: 프로그래밍 관련 강좌는 대부분 C와 Java처럼 꾸준히 이용되는 프로그래밍 언어를 기본으로 포함하기 때문에 과거부터 꾸준히 인기 있는 프로그래밍 언어를 간접적으로 나타낸다. Google, Bing, Wikipedia 등에서 프로그래밍 언어가 검색된 횟수: 현재 인기 .. 2021. 7. 8.
Python을 이용한 이용한 유튜브 (YouTube) 댓글 수집 1. YouTube Data API YouTubue 댓글 수집에는 Google에서 제공하는 YouTube Data API를 이용하는 방법과 동영상이 게시된 HTML 문서에서 직접 데이터를 크롤링 (crawling)하는 방법이 있다. 그러나 크롤링 방식은 YouTube에 의해 크롤링 코드의 접근이 차단되거나, 홈페이지 업데이트로 인해 HTML 문서의 형식이 변경되면 동작하지 않을 수 있다는 문제점이 있다. 이 글에서는 Python과 Google에서 제공하는 YouTube Data API를 이용하여 YouTube에 게시된 동영상의 댓글을 수집하는 방법을 소개한다. 개인적인 용도로 API를 이용할 경우에는 할당량을 초과할 일이 거의 없지만, 공개 서비스를 제공하기 위한 목적으로 API를 이용하는 경우에는 반드.. 2021. 1. 17.