
수업 정리
강의 목록
[Python Basic for AI] Basic computer class for newbies
- OS : 프로그램이 동작할 수 있는 구동 환경
- File System : OS에서 파일을 저장하는 트리구조 저장 체계
- File from wiki : 컴퓨터 등의 기기에서 의미 있는 정보를 담는 논리적인 단위로, 모든 프로그램은 파일로 구성 되어 있고, 파일을 사용
- Console : Terminal, CMD 라고도 불리며, GUI와 달리 텍스트를 사용해 컴퓨터에 명령을 입력하는 인터페이스 체계
[Python Basic for AI] 파이썬 개요
- 플랫폼 독립적 인터프리터 언어로, OS와 상관 없이 사용 가능하며, 코드를 바로 실행 가능하다.
- 객체 지향 동적 타이핑 언어로, 실행 순서가 아닌 단위 모듈(개체) 중심으로 프로그램을 작성하고, 프로그램이 실행하는 시점에 데이터에 대한 타입을 결정한다.
[Python Basic for AI] 파이썬 코딩 환경
- 기존 개발환경에서 vscode로 전환
[Python Basic for AI] Variables
- 변수 : 데이터를 저장하기 위한 메모리 공간의 프로그래밍 상의 이름으로, 메모리 주소를 갖고 있고 변수에 들어가는 값은 메모리 주소에 할당
- 패킹 : 한 변수에 여러 개의 데이터를 넣는 것
- 언패킹 : 한 변수의 데이터를 각각의 변수로 반환하는 것
[Python Basic for AI] Function and Console I/O
- 함수는 어떤 일을 수행하는 코드의 덩어리로, 반복적인 수행을 1회만 작성 후 호출을 위해 사용되고, 코드를 논리적인 단위로 분리하는 기능을 갖는다.
[Python Basic for AI] Conditionals and Loops
- 조건문은 조건에 다라 특정한 동작을 하게 하는 명령어로, 조건을 나타내는 기준과 조건의 참/거짓에 따라 실행해야 할 명령으로 구성된다.
- 삼항 연산자 : 조건문을 하용하여 참일 경우와 거짓일 경우의 결과를 한줄에 표현
- break : 특정 조건에서 반복 종료
- continue : 특정 조건에서 남은 반복 명령 생략(pass와 같은 기능인가?)
- else : 반복 조건이 만족하지 않은 경우, 반복 종료 시 1회 수행
[Python Basic for AI] String and advanced function concept
- 문자열은 시퀀스 자료형으로 문자형 data를 메모리에 저장하며, 영문자 한 글자는 1byte의 메모리 공간을 사용한다.
- 값에 의한 호출(Call by Value) : 함수에 인자를 넘길 때 값만 넘김. 함수 내에 인자 값 변경 시, 호출자에게 영향을 주지 않음.
- 참조에 의한 호출(Call by Reference) : 함수에 인자를 넘길 때 메모리 주소를 넘김. 함수 내에 인자 값 변경 시, 호출자의 값도 변경됨.
- 객체 참조에 의한 호출(Call by Object Reference) : 파이썬의 함수 전달 방식으로, 전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나, 새로운 객체를 만들 경우 호출자에게 영향을 주지 않음.
[AI Math] 백터가 뭐예요?
- 벡터는 숫자를 원소로 가지는 리스트(list) 또는 배열(array)로, 공간에서 한점으로 나타내며, 원점으로부터 상대적 위치를 표현합니다.
- 벡터에 숫자를 곱해주면 길이만 변하며(스칼라곱), 벡터끼리 같은 모양을 가지면 덧셈, 뺄셈, 성분곱(Hadamard product)을 계산할 수 있으며, 두 벡터의 덧셈은 다른 벡터로부터 상대적 위치 이동을 표현합니다.
- 벡터의 노름(norm)은 원점에서부터의 거리를 말하며, L1-norm은 각 성분의 변화량의 절대값을 모두 더해 계산하고, L2-norm은 피타고라스 정리를 이용해 유클리드 거리를 계산합니다.
- norm의 종류에 따라 기하학적 성질이 달라지며, 머신러닝에선 각 성질들이 필요할 때가 있으므로 둘 다 사용합니다.
- L1, L2-norm을 이용해 두 벡터 사이의 거리를 계산할 수 있으며, 두 벡터 사이의 거리를 계산할 때는 벡터의 뺄셈을 이용합니다.
- 제 2코사인 법칙에 의해 두 벡터 사이의 각도를 계산할 수 있습니다.
- 내적은 정사영(orthogonal projection)된 벡터의 길이와 관련 있습니다.
- 의 길이는 코사인 법칙에 의해 가 됩니다.
- 내적은 정사영의 길이를 벡터 의 길이 만큼 조정한 값입니다.
[AI Math] 행렬이 뭐예요?
- 행렬(matrix)은 벡터를 원소로 가지는 2차원 배열로, 행(row)과 열(column)이라는 인덱스(index)를 가지며, 행렬의 특정 행(열)을 고정하면 행(열)벡터라 부릅니다.
- 벡터가 공간에서 한 점을 의미한다면 행렬은 여러 점들을 나타냅니다.
- 행렬의 행벡터 는 번째 데이터를 의미합니다.
- 행렬의 는 번째 데이터의 번째 변수의 값을 말합니다.
- 행렬끼리 같은 모양을 가지면 덧셈, 뺄셈을 계산할 수 있습니다.
- 성분곱은 벡터와 똑같고, 스칼라곱도 벡터와 차이가 없습니다.
- 행렬 곱셈(matrix multiplication)은 번째 행벡터와 번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산합니다. (numpy에선 연산을 사용한다.)
- 넘파이의 np.inner는 번째 행벡터와 번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산합니다(※수학에서 말하는 내적과는 다르므로 주의!).
- 행렬은 벡터공간에서 사용되는 연산자(operator)로 이해합니다.
- 행렬곱을 통해 벡터를 다른 차원의 공간으로 보낼 수 있습니다.
- 행렬곱을 통해 패턴을 추출할 수 있고 데이터를 압축할 수도 있습니다.
- 어떤 행렬 의 연산을 거꾸로 되돌리는 행렬을 역행렬(inverse matrix)이 라 부르고 라 표기한다.
- 역행렬은 행과 열 숫자가 같고 행렬식(determinant)이 0이 아닌 경우에만 계산할 수 있다. (numpy.linalg.inv로 구할 수 있다.)
- 만일 역행렬을 계산할 수 없다면 유사역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬 를 이용한다. (numpy.linalg.pinv 로 구할 수 있다.)
- np.linalg.pinv를 이용하면 연립방정식의 해를 구할 수 있다.
- np.linalg.pinv를 이용하면 데이터를 선형모델(linear model)로 해석하는 선형회귀식을 찾을 수 있다.
- sklearn의 LinearRegression 과 같은 결과를 가져올 수 있다.
[AI Math] 경사하강법(순한맛)
- 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구로 최적화에서 제일 많이 사용하는 기법입니다.
- 미분은 함수 의 주어진 점 에서의 접선의 기울기를 구합니다.
- 한 점에서 접선의 기울기를 알면 어느 방향으로 점을 움직여야 함수값이 증가하는지/감소하는지 알 수 있습니다.
- 미분값을 더하면 경사상승법(gradient ascent)이라 하며 함수의 극대값의 위치를 구할 때 사용합니다.
- 미분값을 빼면 경사하강법(gradient descent)이라 하며 함수의 극소값의 위치를 구할 때 사용합니다.
- 경사상승/경사하강 방법은 극값에 도달하면 움직임을 멈춥니다.
- 미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구로 최적화에서 제일 많이 사용하는 기법입니다.
- 벡터가 입력인 다변수 함수의 경우 편미분(partial differentiation)을 사용합니다.
- 각 변수 별로 편미분을 계산한 그레디언트(gradient) 벡터를 이용하여 경사하강/경사상승법에 사용할 수 있습니다.
[AI Math] 경사하강법(매운맛)
- 선형회귀의 목적식은 이고 이를 최소화하는 를 찾아야 합니다.
- 이론적으로 경사하강법은 미분가능하고 볼록(convex)한 함수에 대해선 적절한 학습률과 학습횟수를 선택했을 때 수렴이 보장되어 있습니다.
- 특히 선형회귀의 경우 목적식 은 회귀계수 에 대해 볼록함수이기 때문에 알고리즘을 충분히 돌리면 수렴이 보장됩니다.
- 하지만 비선형회귀 문제의 경우 목적식이 볼록하지 않을 수 있으므로 수렴이 항상 보장되지는 않습니다.
- 확률적 경사하강법(stochastic gradient descent)은 모든 데이터를 사용해서 업데이트하는 대신 데이터 한개 또는 일부 활용하여 업데이트합니다.
- 볼록이 아닌(non-convex) 목적식은 SGD를 통해 최적화할 수 있습니다.
SGD는 데이터의 일부를 가지고 패러미터를 업데이트하기 때문에 연산자원 을 좀 더 효율적으로 활용하는데 도움이 됩니다.- 확률적 경사하강법의 원리 : 미니배치 연산
- 경사하강법은 전체데이터 를 가지고 목적식의 그레디언트 벡터인 를 계산합니다.
- SGD는 미니배치 를 가지고 그레디언트 벡터를 계산합니다.
- 미니배치는 확률적으로 선택하므로 목적식 모양이 바뀌게 됩니다.
- SGD는 볼록이 아닌 목적식에서도 사용 가능하므로 경사하강법보다 머신러닝 학습에 더 효율적입니다
과제
- basic math
- numpy 및 min, max 함수 등을 활용하여 해결- text processing-1
- replace, split, join 함수 등을 활용하여 해결- text processing-2
- text processing-1 문제와 유사하게 해결
피어세션 정리
- 간단한 자기 소개 및 아이스브레이킹
- 그라운드 룰 정리
- 피어세션 운영 계획 수립
- 조 이름 선정
- 피어세션 진행을 위한 Github, Notion 생성
느낀점
기다리던 부스트캠프 일정이 시작되었습니다!!
처음으로 피어세션을 함께할 캠퍼 분들을 만나 앞으로의 진행 방향에 대해 정리해보았고, 다 같이 노력해서 목표하는 바까지 이뤘으면 좋겠습니다😊예상보다 오픈된 강의 분량과 하루동안 진행해야할 학습량이 많아 당황했지만, 기초 단계이고 프리코스로 오픈된 내용이라 가볍게 들을 수 있었습니다.
![]()