본문 바로가기

728x90
반응형

전체 글

[AI] 딥러닝의 학습방법 | Deep Learning | 역전파 | BackPropagation | 미분과 편미분 왜 딥러닝이 필요한가? 단순한 데이터에 대해서는 선형모델만으로도 괜찮음 하지만 분류와 같은 복잡한 문제에 대해서는 신경망 모델을 사용 (비선형 모델) 선형모델과 비선형모델의 결합 → 비선형 패턴을 그리는 신경망 모델 구축 (선형 결합) X와 W의 곱을 통해 선형모델 표현 가능 전체 데이터 행렬 X (n × d) 데이터를 다른 벡터 공간으로 보내줄 가중치 행렬 W (d × p) y절편에 해당하는 벡터들을 모든 데이터행에 대해서 복제한 행렬 b (n × p) → 이로인한 새로운 결과 O (n × p) → d개의 변수로 p개의 선형 모델을 만듦! → 원래 데이터가 모여있는 d 차원에서 출력 벡터와 같은 p 차원으로 바뀌게 됨 → d 차원에서 p 차원으로 보내주는 가중치 행렬 W(d×p)를 곱해주었기 때문 신경.. 더보기
[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
반응형