본문 바로가기

부스트캠프 AI Tech

(58)
[05] 딥러닝 학습방법 이해하기 신경망 Neural Network 비선형모델인 신경망(neural network) 선형 모델이 숨겨져있다 선형모델 + 비선형 함수의 결합 선형 모델 O : output X : input data W : 가중치 행렬 b : y절편 데이터가 바뀌면 결과값도 바뀐다 출력 벡터 차원은 $d$에서 $p$로 바뀐다 $X$ (n x d) $\times$ W (d x p) → $O$ (n x p) $x_1 \Rightarrow o_1$ 화살표는 p개 softmax $$ softmax(o) = (\frac{exp(o_1)}{\sum_{k=1}^{p}exp(o_k)}, ...,\frac{exp(o_p)}{\sum_{p}^{k=1}exp(o_k)}) $$ 출력벡터 $o$에 softmax 함수를 합성하면 확률벡터가 되므로 특..
[04] 확률적 경사하강법 SGD 선형회귀분석 복습 역행렬을 이용하지 말고, 경사하강법을 이용해 적절한 선형모델을 찾아보자 선형모델 아닌 모델 → 경사하강법 사용 가능 경사하강법: 일반적인 기계학습 최적화 선형회귀의 목적식은 $\Vert y-X\beta \Vert_2$이고 (L2-norm) 이를 최소화하는 $\beta$를 찾아야 하므로 다음과 같은 gradient vector를 구해야 한다 $\nabla_\beta \Vert y-X\beta \Vert_2 = (\partial_{\beta_1} \Vert y-X\beta \Vert_2, ... , \partial_{\beta_d}\Vert y-X\beta \Vert_2)$ $\Vert y-X\beta \Vert_2$가 아닌 $\Vert y-X\beta \Vert_2^2$를 최소화해도 된다..
[03] 경사하강법 미분 Differentiation 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구 최적화에서 제일 많이 사용하는 기법 미분은 변화율의 극한(limit)으로 정의 $f'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}$ 예시$f'(x) = 2x + 2$미분을 손으로 계산하려면 일일이 $h \rightarrow 0$ 극한을 계산해야 한다 $\frac{f(x+h) - f(x)}{h} = 2x + 2 + h$ $f(x) = x^2 + 2x + 3$ 최근에는, 미분을 손으로 직접 계산하는 대신 컴퓨터가 계산해준다! sympy.diff - symbolic python import sympy as sym from sympy.abc impor..
[02] 행렬 행렬이란? 행렬(matrix)는 벡터를 원소로 가지는 2차원 배열 벡터의 확장 벡터의 원소 → 숫자, 행렬의 원소 → 벡터 numpy에서는 행(row)이 기본 단위 x = np.array([1, -2, 3], [7, 5, 0], [-2, -1, 2]) 벡터 : 소문자 bold, 행렬 : 대문자 bold 행렬은 행(row)과 열(column)이라는 index를 가진다 $X = (x_{ij})$와 같이 표기하기도 한다 행렬의 특정 행(열)을 고정하면 행(열)벡터라고 부른다 전치행렬 (transpose matrix)은 행과 열의 인덱스가 바뀐 행렬 $X^T = (x_{ji})$ 행렬의 이해 (1) 벡터가 공간에서 한 점을 의미하면, 행렬은 여러 점들을 나타낸다 행렬의 행벡터 $x_i$는 i번째 데이터를 의미한..
[01] Vector Vector Vector 숫자를 원소로 가지는 list 또는 array 공간에서 한 점 (원점으로부터 상대적 위치) 표현 스칼라곱 시 방향은 그대로, 길이만 변함 두 벡터의 덧셈: 다른 벡터로부터 상대적 위치 이동 벡터의 노름(norm) 원점에서부터의 거리 L1 norm $\Vert x \Vert_1 = \sum_{i=1}^{d}\Vert x_i \Vert$ 각 성분의 변화량의 절대값의 합 robust 학습, lasso 회귀 L2 norm $\Vert x \Vert_2 = \sqrt{\sum_{i=1}^{d} \vert x_i \vert^2}$ 피타코갈스 정리를 이용해 유클리드 거리 계산 laplace 근사, ridge 회귀 두 벡터 사이의 거리 $\Vert y - x \Vert = \Vert x - ..
[10] configparser, argparser configparser - 파일에 parser 프로그램의 실행 설정을 file에 저장함 Section, Key, Value 값의 형태로 설정된 설정 파일을 사용 설정파일을 Dict Type으로 호출후 사용 'example.cfg' [SectionOne] Status: Single Name: Derek Value: Yes Age: 30 Single: True [SectionTwo] FavoriteColor = Green [SectionThree] FamilyName: Johnson import configparser config = configparser.ConfigParser() config.read('example.cfg') config.sections() # sections 확인 for key in ..
[09] File Handling file_handling¶ 파이썬은 파일 처리를 위해 "open" 키워드를 사용한다. f = open("", "") f.close() r 읽기모드 - 파일을 읽기만 할 때 w 쓰기모드 - 파일에 내용을 쓸 때 a 추가모드 - 파일의 마지막에 새로운 내용을 추가 할 때 read() - txt파일 안에 있는 내용을 문자열로 반환¶ f = open("i_have_a_dream.txt", "r" ) contents = f.read() print(contents) f.close() with 구문과 함께 사용하기¶ with open("i_have_a_dream.txt", "r") as my_file: contents = my_file.read() print (type(contents), contents) 여러가지 ..
[08] Exception 예외처리¶ try: 예외 발생 가능 코드 except : 예외 발생시 대응하는 코드 try: 예외 발생 가능 코드 except : 예외 발생시 동작하는 코드 else: 예외가 발생하지 않을 때 동작하는 코드 try: 예외 발생 가능 코드 except : 예외 발생시 동작하는 코드 finally: 예외 발생 여부와 상관없이 실행됨 Built-in Exception¶ Exception 이름 내용 IndexError List의 index 범위를 넘어갈 때 NameError 존재하지 않은 변수 호출 ZeroDivisionError 0으로 나눌 때 ValueError 변환할 수 없는 문자/숫자를 변환할 때 FileNotFoundError 존재하지 않은 파일을 호출할 때 강제 Exception 발생 -> raise..
[07] 내장함수 property와 Decorator class C: def __init__(self): self.__age = 12 def print_age(self): return self.__age def change_age(self, new_age): self.__age = new_age age = property(print_age, change_age) a.__age = 13 위 코드를 실행하면 __age는 private 로 되어있기 때문에 오류가 뜬다. 그래서 __age를 보거나 변경할 때 클래스 내 get, set 함수를 구현하여 변경한다. 위 코드에선 print_age와 change_age를 사용해야한다. a.change_age(3) a.print_age() 이를 한번에 property 함수를 이용해 a.age 를 사용 가능하게 할 수 있다...
[06] Class, Inheritance, Visibility 축구 선수 정보 class로 구현¶ In [1]: class SoccerPlayer(object): def __init__(self, name : str, position : str, back_number : int): self.name = name self.position = position self.back_number = back_number # 반드시 self 를 추가해야만 class 함수로 인정됨 def change_back_number(self, new_number): print(f"change number from {self.back_number} to {new_number}") self.back_number = new_number # 인스턴스 print 할때 __str__ 매서드 사용 de..