본문 바로가기

728x90
반응형

Dev

[AI] RNN (Recurrent Neural Network) | BPTT (Backpropagation Through Time) 시계열 데이터란? 시계열 데이터는 데이터가 시간 순서에 따라서 나열된 시퀀스 데이터 시퀀스 데이터는 독립동등분포 가정을 잘 위배 → 데이터 순서를 바꾸거나 과거 정보에 손실이 발생하면 데이터의 확률 분포도 바뀌게 됨! 이전 시퀀스의 정보를 가지고 앞으로 발생할 데이터의 확률분포에는 조건부 확률을 이용 (베이즈법칙) 단, 어느정도까지의 과거를 고려하는데에서 아래 수식의 t의 길이가 조정됨 (필요한 과거만 반영하는 것이 중요) 따라서 이러한 시퀀스 데이터를 다루기 위해서는 길이가 가변적인 데이터를 다룰 수 있는 모델이 필요 (고정된 길이 r만큼의 시퀀스만 사용하는 경우 Autoregressive Model, 자기 회기모델이라고 부름) (혹은 바로 이전 정보를 제외한 나머지 정보를 H_t라는 잠재변수로 인코딩.. 더보기
[AI] 경사하강법 | 미분이란? | 경사상승법 | Gradient Descent | Differentation 미분(differentation)이란? 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구 즉, 미분은 함수 f의 주어진 점 (x, f(x))에서의 접선의 기울기 값을 구하게 해줌 sympy 라이브러리를 이용하면 파이썬 코드로도 미분을 구현할 수 있음 - diff() 함수 이용 접선의 기울기를 알면 어느 방향으로 점을 움직여야 함수값이 증가 및 감소하는지 알 수 있다! 딥러닝에서 차원(축)이 매우 크게 증가할 때는, 어느 방향으로 움직여야 오차가 줄어드는지 알기 어려움 따라서 미분을 이용해 함수값이 증가 혹은 감소할 것인지 파악하여 이동 미분값(기울기값)이 음수인 경우 (f'(x) x) → 오른쪽으로 이동 시 함수값 감소 (x - f.. 더보기
[AI] 벡터와 행렬 | Vector | Matrix | 역행렬 | 유사역행렬 | 무어펜로즈 역행렬 벡터 (Vector) 숫자를 원소로 가지는 리스트 또는 배열 세로로 놓여있는 경우 - 행벡터 (numpy로 주로 다룰 때 사용) 가로로 놓여있는 경우 - 열벡터 코드로 구현하기 위해서는 numpy 라이브러리를 주로 사용 벡터는 n차원 공간 내 원점으로부터(영벡터) 상대적인 위치에 있는 한 점을 표현 - 숫자를 곱해주면 길이만 변한다 (스칼라곱) - 같은 모양을 가지면 성분간 덧셈, 뺄셈, 곱셈(Element-wise) 등의 연산이 가능하다 - 두 벡터의 덧셈: 다른 벡터로부터 상대적 위치이동 벡터의 노름(norm): 원점에서부터의 거리 - 구성성분의 개수 상관없이 계산 가능 L1 Norm: 임의의 차원 d에 대해서 구성성분의 절대값을 모두 더하는 것 (=좌표평면에서 좌표축에 따라 움직이는 거리) L2 N.. 더보기
[AI] 파이썬과 넘파이 (Numpy) | ndarray | element-wise operation | broadcasting | reshape | flatten Numpy란? Numerical Python 파이썬의 고성능 과학 계산용 패키지 Matrix Vector와 같은 Array 연산의 사실상 표준 일반 리스트에 비해 빠르고, 메모리 효율적 반복문 없이 데이터 배열에 대한 다양한 처리를 지원 import numpy as np Numpy와 배열 (ndarry) numpy를 이용한 배열 생성 → ndarray 객체 한가지 데이터 타입만 저장 가능! Dynamic typing is not supported! test_array = np.array([1, 2, 3, 4], float) 변수명 = np.array(리스트, 데이터타입) 기존의 파이썬에서 리스트와 같이 데이터의 메모리가 연속적으로 저장되어 있음 → 연산에서 이점이 있음 → 메모리의 크기가 일정하여 저장 .. 더보기
[AI] 파이썬의 예외처리 (Exception Handling) | File Handling | Logging 예외 (Exception) : 잘못된 예외 상황 예상이 가능한 예외 발생 여부를 사전에 인지할 수 있는 예외 사용자의 잘못된 입력, 파일 호출 시 파일 없음 등 개발자가 반드시 명시적으로 정의해야 함 예상이 불가능한 예외 인터프리터 과정에서 발생하는 예외 (개발자의 실수) 리스트의 범위를 넘어가는 값 호출, 정수 0으로 나눔 수행 불가 시 인터프리터가 자동 호출 예외 처리 (Exception Handling) : 잘못된 예외 상황에 대한 대처 try~except 문법: if문과 크게 다르지 않지만, except 구문을 더 권장하는 경우도 있음 (예: ZeroDivisinoError) if문 → 로직적인 문제를 다룰때 사용 ~ 라면! 의 경우에 주로 사용 exception: 사용자의 입력이나 데이터가 잘못.. 더보기
[AI] 파이썬의 모듈과 프로젝트 (패키지) | 다른 사람이 작성한 코드를 사용하기 모듈 (Module) 프로그램 내 작은 프로그램의 조각들 (파이썬의 moudle은 py파일을 의미) 객체를 포함하는 단위 모듈들을 모아서 하나의 큰 프로그램을 개발할 수 있음 Built-in Moudle도 여러 종류가 있음 (예: random, sys, os , math 등 ... ) namespace 모듈을 호출할 때 범위를 정하는 법 모든 걸 호출할 수 도 있지만 필요한 내용만 골라서 호출할 수 있음 이를 위해 from, import as 등을 사용 호출 메소드명에 *를 작성하면 모든 함수 또는 클래스를 호출한다는 의미! from 코드파일명 import 호출메소드명 as 별칭 가독성을 위해 모듈의 좋은 검색 키워드를 사용해두면 좋을 것 -- ChatGPT한테 물어보거나 다른 사람의 코드 참조해도 좋을.. 더보기
[AI] 파이썬과 객체 지향 프로그래밍 (Object Oriented Programming, OOP) 객체 지향 프로그래밍이란? Object-Oriented Programming, OOP 객체: 실생활에서 일종의 물건 - 속성과 행동을 가짐 OOP는 이러한 객체 개념을 프로그램으로 표현 → 속성은 변수(variable), 행동은 함수 (method)로 표현됨 파이썬 역시 객체 지향 프로그래밍 언어임 객체지향 프로그래밍이란? OOP는 설계도에 해당하는 클래스(Calss)와 이의 실제 구현체인 인스턴스(instance)로 나눔 인스턴스마다 속성이 바뀔수도 있음 하지만 이는 적용 케이스에 따라 구현 시 달라짐 ❗ 참고 ❗ 파이썬 함수 및 변수명에는 띄어쓰기 부분에 "-"를 추가하는 snake_case 사용 (예: professor_name) 파이썬 클래스명에는 띄어쓰기 부분에 대문자로 작성하는 CamelCas.. 더보기
[AI] 실제 그래프와 랜덤 그래프 | 그래프의 경로ㆍ거리ㆍ지름 | 연결성 | 꼬리 분포 | 거대연결요소 | 군집 | 군집 계수 1. 실제 그래프 vs 랜덤 그래프 실제 그래프(Real Graph): 다양한 복잡계로부터 얻어진 그래프 예) 소셜 네트워크, 전자상거래 구매 내역, 인터넷, 웹, 뇌, 단백질 상호작용, 지식그래프 등 랜덤 그래프(Random Graph): 확률적 과정을 통해 생성한 그래프 예) 에르되스-레니 랜덤 그래프 (Erdos-Renyi Random Graph) 임의의 두 정점 사이에 간선이 존재하는지 여부는 동일한 확률 분포에 의해 결정됨 n개의 정점을 가지며, 임의의 두 개의 정점 사이에 간선이 존재할 확률은 p 정점 간의 연결은 서로 독립적(independent) 아래의 그림은 G(3, 0.3)에 의해 생성될 수 있는 그래프와 각각의 확률임 2. 그래프의 경로, 거리, 지름 정점 간 경로(Path): 정점 .. 더보기

728x90
반응형