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..
기본 가정 (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..
머신러닝, 인공지능 소식을 접하면 심심치 않게 회귀라는 말을 접한다. 회귀란 뭘까? 회귀:한 바퀴 돌아서 본디의 자리로 돌아옴. [출처: Oxford Languages] 데이터를 다루는 머신러닝 입장에서 보면, 흩어져 있는 데이터들이 자신의 자리로 돌아간다고 할 때, 이를 가장 잘 설명하는 선형의 그래프를 찾는 게 선형 회귀의 목표이다. 쉬운 말로 하면, 데이터의 흩어져 있는 모습과 유사한 형태의 선형 그래프를 찾으면 된다. 일변수 함수의 선형 회귀 분석 데이터 생성 본격적으로 회귀 분석을 하기 위해 데이터를 생성해 보자! 선형 회귀 분석을 하기 위해 데이터의 전체적인 경향을 나타내는 선형 함수를 하나 만들자. y = ax+b 의 형태로 중학교 수학을 배웠다면 누구나 아는 함수이다. 데이터가 이 선형 함..
이 글은 단계별로 쓰여진 글이며 첫번째 단계를 보기 위해서는 아래 게시글을 참고 바람! 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..
이 글은 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..
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..
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..
이번 주제는 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', ..
우리 주위에는 굉장히 많은 벡터장이 있다. 중력장, 자기장, 전기장... 등등. 공학자는 자기 분야에 해당하는 벡터장에서 어떠한 물체가 어떻게 운동하는지 알 수 있어야 한다. 이번에는 벡터장 안에서 곡선이 어떻게 적분 되는 지를 판단해 보자. 먼저 곡선의 식 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을..
주어진 함수 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..
매트랩의 기능 중에서 가장 쓸모 있다고 생각하는 기능 중 하나가 그래프이다! 사람이 손으로 그래프를 그리는 데에는 한계가 있기에 어떠한 그래프의 생김새를 알고 싶을 때는 매트랩을 활용하자.. 벡터 함수 (Vector Function) 벡터 함수란 위의 예시처럼 매개 변수 t 에 대해서 3차원 공간 상의 점의 좌표를 갖는 함수이다. 즉, 실수에 벡터를 대응시키는 함수이다. 이제 매트랩에서 함수 정의를 하고 t 의 구간 -10부터 10까지 그래프를 그려보자. 1. 함수 정의. 매트랩의 function handle 로 정의한다. (아직 t에 어떠한 값도 대입되지 않았다.) xt = @(t) sin(t); yt = @(t) cos(t); zt = @(t) t; 다음 단계로 넘어가기 전에 이 함수가 어떻게 생겼는..
매트랩이 편리한 점은 다른 프로그래밍 언어는 수학적 식을 세우거나 해석적 방법을 이용한 문제 풀이에 한계가 있지만, 매트랩은 자체 내장 함수를 통해 많은 문제를 손쉽게 풀 수 있다. 물론 그만큼 자유도면에서는 떨어지지만 그래프와 수식, 방정식 풀이는 매우 편리한 기능이다. 역행렬을 구하는 것도 마찬가지이다. 행렬을 정의하는 법과 조작법을 모른다면 아래 글을 먼저 보고 오자! 2023.03.05 - [Computer Science/Matlab(수학)] - 매트랩 [선형 대수] 행렬, 사다리꼴 행렬, 행렬식 매트랩 [선형 대수] 행렬(matrix), 사다리꼴 행렬(row echelon form), 행렬식(determinant) 선행 대수가 무엇인가. 용어 그대로 해석해 보면 선형 : 뿌린 만큼 거둔다 (덧셈..
선행 대수가 무엇인가. 용어 그대로 해석해 보면 선형 : 뿌린 만큼 거둔다 (덧셈 뺄셈). 대수 : 수를 대신한다. 즉 변수를 설정하여 원하는 답을 환원한다. 그렇다면 선형 대수는 선형적인 문제를 대수적 방법으로 푼다고 이해해도 좋다. 선형 대수를 배울 때 가장 기본이 행렬이다. 한글을 배울 때 자음, 모음을 배우 듯이 행렬은 가장 기본적인 단위이다. 행렬을 이용하면 많은 데이터를 효율적으로 관리 가능하다. 파이썬의 numpy 라이브러리, 매트랩 등 다양한 프로그래밍 언어가 행렬을 지원하고 특히, 이미지, 영상 등 용량이 큰 파일은 행렬로 데이터가 표시된다. 가볍게 행렬을 조작하며 조금씩 친해져 보자. 행렬 설정하기. K = [-0.2106 0.4656 -0.4531 0.7106; -0.6018 0.24..
이 글을 읽기 전에 라플라스 변환이 궁금하다면 아래 글을 보고 오자! 2023.02.19 - [Computer Science/Matlab(수학)] - 매트랩 [2계 상미분 방정식] 라플라스 변환 (Laplace Transform) 매트랩 [2계 상미분방정식] 라플라스 변환 (Laplace Transform) Laplace 변환은 공학자들에게 기본적으로 중요하다. 상미분방정식의 풀이 과정을 대수적 문제의 풀이 과정으로 단순화 한다는 장점이 있다. Laplace 변환의 공식은 Laplace 변환의 장점은 첫째, 상미 greedy-engineer.tistory.com 라플라스 변환과 합성곱. 생소한 개념일 수 있는 사람을 위해 간단한 설명을 적어본다. 라플라스 변환은 덧셈, 뺄셈을 할 때는 분배가 가능하다. ..