Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 구현
- 부스트캠프_AITech_3기
- 알고리즘스터디
- 이코테
- 프로그래머스
- 최단경로
- 기술면접
- 이진탐색
- mrc
- Level2_PStage
- python3
- 그리디
- 주간회고
- 단계별문제풀이
- 알고리즘_스터디
- dfs
- 다시보기
- U_stage
- ODQA
- 정렬
- Level2
- Level1
- 글또
- 백준
- 백트랙킹
- 그래프이론
- dp
- 부스트캠프_AITech3기
- 파이썬 3
- 개인회고
Archives
- Today
- Total
국문과 유목민
[일일리포트] Day 01 (머신러닝 기초) 본문
해당 일일리포트에서는 네이버 커넥트에서 진행하는 '부스트캠프 AI Tech 3기'에서 배운 내용을 다루고 있습니다. 저작권 이슈 때문에 관련 자료를 올릴 수 없어, 핵심 이론과 코드 위주로 정리하고 있기에 내용이 부족할 수 있습니다.
▶ Today I Learned (핵심 요약 정리)
파이썬 기초 강의
- 절대경로: 루트노드부터 원하는 파일까지의 경로
- 상대경로: 현재 위치한 디렉토리에서 파일까지의 경로를 의미한다.
- CLI(Command Line Interface): Console = Terminal = CMD, 기본 명령어 (ex. cd, clear, mkdir, rm, ls)
- 파이썬 : 플랫폼 독립적인 인터프리터 언어 & 객체지향 동적 타이핑 언어이다. 이해하기 쉬운 문법이며, 파이썬은 대부분의 라이브러리가 이미 구현되어 있다. 그렇기에 데이터 분석과 AI 분야에서는 파이썬이 표준으로 잡혀있다.
Life Is Short You need Python
벡터
- 벡터: 숫자를 원소로 가지는 리스트 또는 행렬, 벡터는 공간에서 한 점을 나타내며 원점으로부터 상대적 위치를 표현
- 벡터의 연산: 같은 모양을 가지는 벡터끼리 덧셈, 뺄셈을 통해 두 벡터의 상대적 위치이동을 표현
- 벡터의 노름(norm): 원점에서부터의 거리를 말한다. 벡터의 노름은 임의의 차원 d에 대해 성립한다(2차원, 3차원 + a)
- L1 Norm: 각 성분의 변화량의 절대값을 모두 더한다.
- L2 Norm: 피타고라스 정리를 이용해 유클리드 거리 계산한다.
- 벡터 거리: L1, L2 Norm을 이용해 두 벡터 사이의 거리를 계산할 수 있으며, 두 벡터 사이의 거리는 벡터의 뺄셈을 이용한다.
- 내적(inner product): x와 y의 각 항들을 성분곱해서 더한 값이다. 내적은 정사영된 벡터의 길이와 관련있으며, 두 벡터의 유사도를 측정하는데 사용가능하다.
행렬
- 행렬: 벡터를 원소로 가지는 2차원 배열. numpy에서는 행(row)이 기본 단위이다.
- 전치행렬(Transpose): 행과 열의 인덱스가 바뀐 행렬을 말한다.
- 행렬의 연산: 행렬끼리 같은 모양을 가지면 벡터와 같이 덧셈, 뺄셈, 성분곱, 스칼라곱 계산 가능
- 행렬 곱셈(Matrix Multiplication): i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬. 행렬곱은 X의 열의 개수와 Y의 행의 개수가 같아야 한다. XY의 행렬곱은 YX의 행렬곱과 값이 다르다.
- np.inner 함수: i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다. 따라서 넘파이의 inner함수를 사용하려면 XY에서 Y를 전치(Transpose)시켜줘야 한다.
- 역행렬(Inverse Matrix): 어떤 행렬 A의 연산을 거꾸로 되돌리는 행렬을 의미. 1) 행과 열의 숫자가 같고 2) 행렬식이 0이 아닌 경우여야 한다는 두 가지 조건이 있다.
- 유사역행렬 (Pseudo Inverse Matrix): 역행렬을 계산할 수 없을 때, 유사역행렬(무어펜로즈 역행렬)을 이용할 수 있다. 무어펜로즈 역행렬을 계산할 때는 행과 열의 개수에 따라서 연산의 순서가 달라지게 된다.
- mxn 행렬 A에서 m<n(full row rank)일 경우, 우측 역행렬(AA+)을 갖는다. m>n(full column rank 이 많음)일 경우 좌측 역행렬(A+A)을 갖는다.
- (참고자료) 유사역행렬 심화 자료 (출처): https://pasus.tistory.com/31
경사하강법 (Gradient Descent)
- 미분: 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구이다. 미분을 하는 이유는 접선의 기울기를 알고 싶기 때문이고, 접선의 기울기를 알면 점이 움직여야 하는 방향을 알 수 있다.
- 경사하강법: 미분값을 빼면서 함수의 극소값의 위치를 구하는 방법
- 그레디언트 벡터: 각 점 (x, y, z) 공간에서 f(x, y) 표면을 따라 -∇f 벡터를 그리면 f(x, y)에서 최소점으로 향하는 방향을 알 수 있다. 이를 따라가다보면 가장 빨리 최소점으로 향하는 방향을 알 수 있다. (∇ ← nabla)
- 경사하강법 선형회귀 계수 구하기: 선형회귀의 경우 미분 가능하고, convex한 함수에 대해 학습률, 학습횟수에 관한 하이퍼파라미터를 잘 조정하면 충분히 수렴이 보장된다. 단, 비선형 회귀 문제의 경우 항상 보장되지는 않는다.
확률적 경사하강법 (SGD, Stochastic Gradient Descent)
- 확률적 경사하강법: 모든 데이터를 사용하지 않고, 데이터의 일부만을 활용해서 값을 업데이트 한다. non-convex한 목적식에도 최적화를 할 수 있다. SGD는 일반적인 경사하강법의 그레디언트 벡터보다 정확성은 떨어질 지라도 연산자원을 효율적으로 활용할 수 있다는 점에서 실증적으로 더 낫다고 검증됐다.
- 확률적 경사하강법 논리: SGD는 미니배치를 가지고 그레디언트 벡터를 계산한다. SGD는 non-convex함수에서 확률값을 이용해 극소점과 극대점을 구분할 수 있고 이를 이용해 탈출할 수 있다. SGD는 여러 목적식에도 사용이 가능하기에 머신러닝 학습에 더 효율적이라고 평가받는다. 단, 미니배치 사이즈를 너무 작게 설정하면 그냥 경사하강법보다 시간이 오래걸릴 수 있다. (하이퍼 파라미터 setting의 중요성)
▶ Review (기록)
부스트캠프가 드디어 시작됐다. 이제는 5개월 동안 달릴 시간만 남은 것 같다. 첫 날 동안 팀원들도 보고 출결, 수업 규칙 등을 접하고 또 규칙들도 정하면서 강의도 듣느라고 정신이 없었던 것 같다. 하지만 뭔가 커리큘럼을 제대로 따라가서 학습한다면 큰 성과를 얻을 수 있을 것 같다는 생각도 들어서 기대가 된다.
이번 주는 주로 사전학습 강의에서 들었던 강의들이 많이 있기 때문에 비교적 들을만할 것 같다는 생각이 들지만, 장기전으로 생각해서 너무 만만하게 보지말고 적당히 긴장하면서 내용들을 제대로 곱씹을 필요가 있을 것 같다. 특히 수학적인 이론의 경우 시간이 지나면 점점 격차가 벌어지기 때문에 기초를 조금 더 잘 닦을 필요가 있어보인다.
내일은 퀴즈와 과제를 미리 모두 풀어보자.
'IT 견문록 > 2022_부스트캠프 AITech 3기(100일)' 카테고리의 다른 글
[1주차] 학습 정리 및 회고 (0) | 2022.01.21 |
---|---|
[일일리포트] Day 05 (0) | 2022.01.21 |
[일일리포트] Day 04 (0) | 2022.01.20 |
[일일리포트] Day 03 (1) | 2022.01.19 |
[일일리포트] Day 02 (1) | 2022.01.18 |
Comments