전체 글

일기
Computer Science/Python

[AI PYTHON] AUTOENCODER 오토인코더 (ChatGpt, Stable Diffusion의 원리)

Generative Model (생성형 모델) 중 하나인 ChatGPT가 AI의 잠재력을 전세계에 퍼뜨리고 있다. 개인적인 생각으로 만든 사람도 정확히 ChatGPT가 어떻게 학습이 가능한 지에 대한 설명을 할 수는 없다고 생각한다. Model의 layer, weight들이 학습되는 형태는 처음에 초기값을 어떻게 잡는 지, 어떤 activation function을 쓰는 지에 따라 다르며, chatGPT처럼 데이터가 많게 되면 더더욱 설명하기는 어렵다. 우리가 ChatGPT의 원리를 정확히 알 수는 없더라도 생성형 모델의 기본적인 유형 중 하나인 Autoencoder에 대해서 먼저 보도록 하자. Autoencoder는 encoder 부분과 decoder 부분으로 나뉜다. Encoder는 latent sp..

Computer Science/AI

[AI 이론] 인공지능 입문 이론 한 번에 정리하기!

Neural Network Architecture Categories (신경망 종류) Perceptron Multilayer Perceptron (MLP) / feedforward (순전파) backpropagation (역전파) Convolutional Neural Networks (CNNs) Recurrent Neural Networks (RNNs) Long Short-Term Memory Networks (LSTMs) Gated Recurrent Units (GRUs) Transformer (최신) Activation Function Categories (활성 함수) Linear Sigmoid Tanh ReLU PReLU Optimization Algorithm (최적화 알고리즘) Stochasti..

Computer Science/Python

[AI-Pytorch Python] 다변수 함수의 선형 회귀 정복 및 실습 (2) (Kill Linear Regression Using Pytorch)

2023.04.02 - [Computer Science/Python] - [AI-Pytorch Python] 선형 회귀 정복 및 실습 (1) (Kill Linear Regression Using Pytorch) [AI-Pytorch Python] 선형 회귀 정복 및 실습 (1) (Kill Linear Regression Using Pytorch) 머신러닝, 인공지능 소식을 접하면 심심치 않게 회귀라는 말을 접한다. 회귀란 뭘까? 회귀:한 바퀴 돌아서 본디의 자리로 돌아옴. [출처: Oxford Languages] 데이터를 다루는 머신러닝 입장에서 보면, greedy-engineer.tistory.com 이 글을 보기 전에 이해를 돕기 위해 전 글을 보고 오기를 추천한다. 필요 라이브러리 다운로드 from..

Computer Science/AI

[AI 이론] 인공지능과 확률 정복하기 (Generative Model, Discriminative Model, Bayes Theorem)

기본 가정 (Input Data:X, Output Data: Y) 인공지능 모델에서 갖고 있는 데이터(input data)를 X, 추출하는 데이터(Output data)를 Y라고 한다. 인공지능 모델에서 우리는 P(X) X가 일어날 확률보다는 P(Y|X) X가 발생했을 때 output인 Y가 발생할 확률을 구하는 것을 목표로 한다. Bayes Theorem (베이즈 정리) 확률 이론이 여기서 왜 나오나 싶겠지만, 인공지능의 기반이 확률이기에 확률 및 통계는 빠질 수 없다. 특히 조건부 확률 이 글이 다룰 내용에서 많은 비중을 차지하기에 먼저 다루기로 한다. Bayes Theorem을 간략히 정리하면 사전 확률 (prior probability)를 이용하여 사후 확률(posterior probability..

Computer Science/Python

[AI-Pytorch Python] 선형 회귀 정복 및 실습 (1) (Kill Linear Regression Using Pytorch)

머신러닝, 인공지능 소식을 접하면 심심치 않게 회귀라는 말을 접한다. 회귀란 뭘까? 회귀:한 바퀴 돌아서 본디의 자리로 돌아옴. [출처: Oxford Languages] 데이터를 다루는 머신러닝 입장에서 보면, 흩어져 있는 데이터들이 자신의 자리로 돌아간다고 할 때, 이를 가장 잘 설명하는 선형의 그래프를 찾는 게 선형 회귀의 목표이다. 쉬운 말로 하면, 데이터의 흩어져 있는 모습과 유사한 형태의 선형 그래프를 찾으면 된다. 일변수 함수의 선형 회귀 분석 데이터 생성 본격적으로 회귀 분석을 하기 위해 데이터를 생성해 보자! 선형 회귀 분석을 하기 위해 데이터의 전체적인 경향을 나타내는 선형 함수를 하나 만들자. y = ax+b 의 형태로 중학교 수학을 배웠다면 누구나 아는 함수이다. 데이터가 이 선형 함..

Computer Science/Python

[AI OpenCV-Python] SIFT를 통한 이미지 매칭 (2) (Image Feature Extraction/Matching Using SIFT)

이 글은 단계별로 쓰여진 글이며 첫번째 단계를 보기 위해서는 아래 게시글을 참고 바람! 2023.03.27 - [Computer Science/Python] - [AI OpenCV-Python] SIFT를 통한 이미지 특징 추출 (1) (Image Feature Extraction/Matching Using SIFT) [AI OpenCV-Python] SIFT를 통한 이미지 특징 추출 (1) (Image Feature Extraction/Matching Using SIFT) 이 글은 Google Colab 환경에서 실행 되었습니다. !cat /etc/*release 출력: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DES..

Computer Science/Python

[AI OpenCV-Python] SIFT를 통한 이미지 특징 추출 (1) (Image Feature Extraction/Matching Using SIFT)

이 글은 Google Colab 환경에서 실행 되었습니다. !cat /etc/*release 출력: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.5 LTS" NAME="Ubuntu" Google Colab의 환경은 Linux Ubuntu이니 참고한다. OpenCV? OpenCV는 컴퓨트 비전 라이브러리로 컴퓨터가 이미지를 인식하거나 다루는데 쓰이는 라이브러리이다. C++ 언어로 쓰였고, python wrapper인 OpenCV-python 을 이용하여 python으로도 조작이 가능하다. 이미지를 다루는 데에 array를 기본적으로 사용하여 data structure가 numpy..

Finance

ETF? 미국 주식? 첫 시작!

쓰는 이유 순전히 내가 보기 위해 쓰고, 이 글로 누군가 궁금증을 해소할 수 있을 거라고 생각하지는 않는다. 그래도 나 같이 주식이 처음이고 어떻게 해야 되는지 모르는 사람이 보면 첫 시작으로 좋을 수 있다고 생각한다. NewJeans 투자하려는 너! 왜 미국 주식인가? 미국은 기본적으로 시장이 크다. 전세계의 돈이 몰리기 때문에 미국이 망하면 세상이 망할 가능성이 크다. 나 같은 소액 투자자는 큰 흐름에 타면서 치고 빠지기만 잘해도 어느 정도의 돈은 모을 수 있다고 생각한다. 한국의 ETF는 미국보다 기본적으로 배당금도 적고, 미국 ETF 시장보다 덜 발달되어 있다. 물론 매번 환전해야 하는 번거로움이 있지만 한국에만 있을 생각이 없는 나에게는 크게 상관 없다고 생각한다. 심지어 배당금도 달러로 들어오..

Computer Science/Python

[AI tensorflow] Convolution Neural Network(CNN) MNIST 데이터 구분 (0-9 숫자 구분하기)

tensorflow: 머신러닝을 효과적으로 하기 위한 파이썬 프레임워크이다. 앞선 글 중에, pytorch 프레임워크, scikit-learn 라이브러리를 다룬 내용이 있으니 먼저 보고 오자! 2023.03.20 - [Computer Science/Python] - [AI PYTORCH] Convolution Neural Network(CNN) MNIST 데이터 구분 (0-9 숫자 구분하기) [AI pytorch] Convolution Neural Network(CNN) MNIST 데이터 구분 (0-9 숫자 구분하기) scikit-learn을 해봤으니 한 단계 업그레이드 된 프레임워크 'pytorch'로 구현을 해보자. 좀 더 깊은 이해를 위해 scikit-learn을 참고하고 와도 좋다! 2023.03..

Computer Science/Python

[AI pytorch] Convolution Neural Network(CNN) MNIST 데이터 구분 (0-9 숫자 구분하기)

scikit-learn을 해봤으니 한 단계 업그레이드 된 프레임워크 'pytorch'로 구현을 해보자. 좀 더 깊은 이해를 위해 scikit-learn을 참고하고 와도 좋다! 2023.03.17 - [Computer Science/Python] - [AI scikit-learn] Machine Learning. 숫자(0-9) 손 글씨체 구분 (Classfying Handwritten digits) (MNIST) [AI scikit-learn] Machine Learning. 숫자(0-9) 손 글씨체 구분 (Classfying Handwritten digits) (MNIST) 이번 주제는 google colab에서 실행된다. google drive 가 있다면 google colab은 좋은 선택지이며, py..

Computer Science/Python

[AI scikit-learn] Machine Learning. 숫자(0-9) 손 글씨체 구분 (Classfying Handwritten digits) (MNIST)

이번 주제는 google colab에서 실행된다. google drive 가 있다면 google colab은 좋은 선택지이며, python언어와 그 안에 있는 ML 라이브러리 (sklearn, numpy, pandas.. 등등)을 지원한다. 오늘은 0 부터 9까지의 숫자를 구분하는 Neural Network를 만들어본다. 1. 먼저 sklearn 에서 지원하는 데이터를 가져오자 # Loading an example dataset & preprocessing from sklearn.datasets import load_digits import numpy as np data = load_digits() print(data.keys()) # dict_keys(['data', 'target', 'frame', ..

Computer Science/Matlab(수학)

매트랩 [벡터] 선적분. 벡터장 안에서 곡선의 적분. (Integral of curve in Vector Field. Line Integral.)

우리 주위에는 굉장히 많은 벡터장이 있다. 중력장, 자기장, 전기장... 등등. 공학자는 자기 분야에 해당하는 벡터장에서 어떠한 물체가 어떻게 운동하는지 알 수 있어야 한다. 이번에는 벡터장 안에서 곡선이 어떻게 적분 되는 지를 판단해 보자. 먼저 곡선의 식 r(t)와 벡터장 F(x, y)의 식은 아래와 같다. 이 두 함수를 이용하여 문제를 풀어보자. 1. 함수 정의 syms F1(x,y) F2(x,y) r1(t) r2(t) r1(t) = cos(t); r2(t) = sin(t); F1(x,y) = -y; F2(x,y) = -x*y; r = [r1;r2]; F = [F1;F2]; r과 F 모두 symfunc이며 각각 >> r >> F r(t) = F(x, y) = cos(t) -y sin(t) -x*y을..

Computer Science/Matlab(수학)

매트랩 [벡터] 3차원 평면의 법선 벡터 (Perpendicular Vector of 3-Dimensional Surface)

주어진 함수 f는 아래와 같다! 이 함수의 대략적인 모습을 보기 위해 먼저 평면을 그려본다. 참고로 함수 f는 그 자체로 3차원 상의 그래프를 그릴 수는 없기 때문에 f = 0으로 가정하고 z에 대하여 식을 다시 써주면 아래와 같다. 이때 우리는 z 의 양, 음을 전부 다 알 필요는 없으므로 양의 부분만 그려본다. 1. A, B 에 x, y 좌표값을 넣어주고 C에 z 값을 넣어준다. [A, B] = meshgrid(0:1:10, 0:1:10); C = sqrt(500-2*A.^2 - 3*B.^2); 2. 매트랩 내장함수 surf 를 이용하여 그래프를 그린다. surf(A,B,C); 대략적인 평면의 그래프를 알았으니 f의 그라디언트(gradient) 벡터장을 그려보자! 1. 함수 f 와 f의 gradien..

Computer Science/Matlab(수학)

매트랩 [벡터] 벡터 함수 미분, 적분, 그래프 그리기 (Vector Function differential, integral, plot)

매트랩의 기능 중에서 가장 쓸모 있다고 생각하는 기능 중 하나가 그래프이다! 사람이 손으로 그래프를 그리는 데에는 한계가 있기에 어떠한 그래프의 생김새를 알고 싶을 때는 매트랩을 활용하자.. 벡터 함수 (Vector Function) 벡터 함수란 위의 예시처럼 매개 변수 t 에 대해서 3차원 공간 상의 점의 좌표를 갖는 함수이다. 즉, 실수에 벡터를 대응시키는 함수이다. 이제 매트랩에서 함수 정의를 하고 t 의 구간 -10부터 10까지 그래프를 그려보자. 1. 함수 정의. 매트랩의 function handle 로 정의한다. (아직 t에 어떠한 값도 대입되지 않았다.) xt = @(t) sin(t); yt = @(t) cos(t); zt = @(t) t; 다음 단계로 넘어가기 전에 이 함수가 어떻게 생겼는..

Computer Science/Matlab(수학)

매트랩 [선형 대수] 역행렬, 고유값(eigen value), 고유벡터(eigen vector)

매트랩이 편리한 점은 다른 프로그래밍 언어는 수학적 식을 세우거나 해석적 방법을 이용한 문제 풀이에 한계가 있지만, 매트랩은 자체 내장 함수를 통해 많은 문제를 손쉽게 풀 수 있다. 물론 그만큼 자유도면에서는 떨어지지만 그래프와 수식, 방정식 풀이는 매우 편리한 기능이다. 역행렬을 구하는 것도 마찬가지이다. 행렬을 정의하는 법과 조작법을 모른다면 아래 글을 먼저 보고 오자! 2023.03.05 - [Computer Science/Matlab(수학)] - 매트랩 [선형 대수] 행렬, 사다리꼴 행렬, 행렬식 매트랩 [선형 대수] 행렬(matrix), 사다리꼴 행렬(row echelon form), 행렬식(determinant) 선행 대수가 무엇인가. 용어 그대로 해석해 보면 선형 : 뿌린 만큼 거둔다 (덧셈..

아키엔지
넓은 구석