일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 회귀
- programmers
- 운영체제
- 파이썬
- gan
- Regression
- Stack
- 재귀
- python3
- LSTM
- SQL
- 정렬
- db
- OS
- 국민대학교
- machine learning
- 머신 러닝
- GIT
- 스택
- 데이터베이스
- 국민대
- googleapiclient
- Seq2Seq
- Python
- instaloader
- kmu
- PANDAS
- C++
- Heap
- Today
- Total
목록개념 정리 (76)
정리 노트

이 포스트는 국민대학교 소프트웨어학부 '컴퓨터 비전' 강의와 '인공지능' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다! 딥 러닝 모델에서 진행되는 역전파 단계에서는 chain rule에 의해 얽혀 있는 수많은 파라미터들에 대한 편미분이 진행됩니다. 이 편미분들을 하나하나 손으로 계산하는 건 불가능합니다. 여기에서 나오는 아이디어가 computational graph입니다. 연산 그래프란 무엇인가? 연산 그래프는 forward 연산이 진행되는 과정을 그래프로 표현한 것입니다. 예를 들어 아래와 같이 computational graph를 그려볼 수 있습니다. 이런 식으로 그래프를 그리면 각 동그라미(노드)들을 하나의 모듈처럼 다..

이 포스트는 국민대학교 소프트웨어학부 '컴퓨터 비전' 강의와 '인공지능' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다! 모델을 학습시킬 때 항상 overfitting(과적합)에 대해 생각해야 합니다. Overfitting 현상을 막는 방법은 여러 가지가 있고, 이 글에서는 규제에 대해 얘기하려 합니다. 규제 기법들도 여러 가지가 존재합니다. 가중치 벌칙(L1 norm, L2 norm 사용) Dropout 조기 멈춤(Early stopping) 데이터 확대: 매우 큰 훈련 집합을 사용(데이터 수집은 비용이 많이 듦) -> 가지고 있는 데이터를 인위적으로 변형 앙상블 기법: 여러 가지 모델들을 사용하는 방법 Regularizer..

이 포스트는 국민대학교 소프트웨어학부 '알고리즘' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다! Backtracking이란? Backtracking(백 트래킹)은 해답을 구할 수 없는 경우가 나온 경우, 더 진행하는 것을 포기하고 이전 상태로 되돌아가서 다른 경우를 찾는 방법을 말합니다. 흔히 생각할 수 있는 예시가 '미로 찾기'입니다. 미로를 빠져나가는 방법들 중에서 가장 많이 알려진 방법이 '우수법' 입니다. 오른손으로 한쪽 벽을 짚으면서 걸으면 무조건 미로를 빠져나갈 수 있는 방법입니다. https://youtu.be/YS4ng_vKr7o?t=89 우수법으로 나아가는 과정이 백트래킹과 같다고 생각이 됩니다. 위와 같은 ..

이 포스트는 국민대학교 소프트웨어학부 '알고리즘' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다! 동적 계획법 동적 계획법은 분할 정복 기법으로 문제를 해결하는 방식과 유사합니다. 분할 정복 기법에 대해 모르시는 분들은 제가 저번에 적은 포스트를 참고하셔도 됩니다. 2022.10.17 - [개념 정리/알고리즘] - 분할 정복 기법(Divide & Conquer) 동적 계획법도 하나의 문제를 여러 작은 문제들로 나눈 다음, 각 문제들의 해답을 이용해서 원래 문제의 답을 구합니다. 분할 정복 기법과의 차이점은 여러 작은 문제들의 연관성입니다. 예를 들어, 병합 정렬이나 퀵 정렬을 구현할 때 나눠지는 배열들은 서로 상관이 없습니다...

이 글은 제가 저번에 적은 글에 이어서 작성하는 글입니다. 그러니 이전 글을 읽고 이 글을 읽어주시기 바랍니다. 2022.10.22 - [개념 정리/알고리즘] - 퀵 정렬(Quick Sort) (with Lomuto) 두 번째 Partiton 방법 이번에 소개하는 partition 방법은 Hoare가 제시한 방법입니다.(사실 퀵 정렬 알고리즘을 제안한 사람이 Hoare입니다.) 이번 partition도 pivot 값을 배열의 가장 왼쪽 값으로 정하고 시작합니다. i와 j의 초기값은 각각 -1, 배열의 길이로 배열의 양 끝을 지정하는 인덱스입니다. 먼저 i의 값을 하나 증가시키고 i번째 원소가 pivot값보다 작으면 다시 i값을 늘려줍니다. 이 과정을 배열의 i번째 값이 pivot보다 크거나 같을 때까지 ..

이 글은 Divide & Conquer에 대해 기본적인 내용을 알고 계신다는 가정 하에 작성되었습니다. 따라서 분할 정복 기법에 대해 잘 모르시는 분들은 제가 저번에 썼던 글을 참고하셔도 됩니다. 2022.10.17 - [개념 정리/알고리즘] - 분할 정복 기법(Divide & Conquer) 퀵 정렬 이름 그대로 빠르게 정렬하는 알고리즘입니다. 퀵 정렬도 분할 정복 기법 방식으로 설명할 수 있습니다. Divide: 배열의 원소들 중 임의의 원소 하나를 기준(pivot)으로 정하고 기준보다 작은 원소들의 그룹과 큰 원소들의 그룹으로 나눕니다. Conquer: 기준점을 중심으로 나누어진 두 그룹을 recursive 하게 quick sort를 수행합니다. 이 설명에서는 'combine' 과정이 빠져있습니다...

이번 포스트는 병합 정렬에 대한 두 번째 글입니다. 그러니 병합 정렬에 대해 잘 모르시는 분은 제가 저번에 적었던 글을 참고하셔도 됩니다. 2022.10.20 - [개념 정리/알고리즘] - 병합 정렬(Merge Sort) 병합 정렬 과정 다시 보기 병합 정렬을 간단하게 얘기하면 배열을 반씩 나누고 나눠진 배열들을 정렬시킨 후 정렬된 두 배열을 다시 하나의 배열로 합치는 정렬 알고리즘이었습니다. 이 과정을 Divide & Conquer의 시각에 맞춰서 보면 세 단계로 나눌 수 있었고 각각 Divide, Conquer, Combine(Merge)로 볼 수 있었습니다. 이번에는 병합 정렬 과정을 Top-down, Bottom-up 방식으로 나눠서 보겠습니다. Top-down: 하나의 커다란 문제를 여러 개의 ..

이 글은 Divide & Conquer(분할 정복 기법)을 알고 계신다는 가정 하에 작성되었습니다. 분할 정복에 대한 글은 제가 저번에 쓴 글을 참고하셔도 됩니다. 2022.10.17 - [개념 정리/알고리즘] - 분할 정복 기법(Divide & Conquer) 병합 정렬(Merge Sort) 병합 정렬을 하는 과정을 분할 정복 기법을 사용해서 설명할 수 있습니다. 전체 배열을 반씩 나눕니다(Divide). 이 과정은 재귀적으로 진행됩니다. 반씩 나눈 배열들을 정렬합니다(Conquer). 정렬한 배열들을 다시 하나로 합칩니다(Combine). 여기서의 base case는 배열의 길이가 1인 경우입니다. 배열의 길이가 1이면 이 자체로 정렬이 되어있기 때문에 배열의 길이가 1이면 반씩 나누는 것을 그만둡니..