일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AI
- 코딩 테스트
- 동적프로그래밍
- CSS
- 그래프
- nlp
- 리눅스
- 구글 킥스타트
- dp
- PYTHON
- 프로그래머스
- google coding competition
- kick start
- OS
- 동적 프로그래밍
- 프로그래밍
- 파이썬
- 브루트포스
- DFS
- 알고리즘
- BFS
- 백준
- 코딩테스트
- 킥스타트
- 네트워크
- 딥러닝
- linux
- 순열
- 코딩
- 운영체제
- Today
- Total
목록딥러닝 (13)
오뚝이개발자
모델 학습을 돌리다보면 GPU 상태를 모니터링해야 되는 경우가 종종 있다. 내가 지정한 GPU로 프로그램이 잘 돌아가고 있는지, GPU 메모리가 학습이 진행되는 정도에 따라 얼만큼 점유되고 있는지, GPU 사용률이 충분히 높게 잡히고 있는지 같은 사항들을 확인해야 되는 경우들이 그러하다. 이럴 땐 아래의 커맨드로 확인이 가능하다. 리눅스 커맨드 창에 아래와 같은 명령어를 입력하면 1초 단위로 갱신되는 GPU 상태를 모니터링할 수 있다. watch -n -1 nvidia-smi
우리가 일반적으로 모델을 설계하고 평가할 때 overfitting이 발생하면 좋지 않은 것으로 인식하곤 한다. 하지만 이러한 overfitting이 마냥 나쁘기만 할까? overfitting이 가져다 줄 수 있는 이점은 없는걸까? 사실 답은 NO이다. 우리가 overfitting으로부터 얻을 수 있는 insight도 있다. 어떠한 이점들이 있을까? 우리가 어떠한 문제를 해결해보고자 모델을 설계했다고 가정해보자. 그런데 안타깝게도 학습 결과 해당 모델이 과적합을 일으킨다. 하지만 좌절할 필요는 없다. 일단 오버피팅이 일어났다는 것은 말그대로 '학습' 자체는 잘 이루어졌다는 점을 생각해볼 수 있다. 여기에 착안한다면 '처음으로' 설계해 '처음으로' 학습을 한 모델이 오버피팅을 발생시켰다면 우린 아래와 같은 ..
딥러닝 층을 구성할 때 행렬 계산이 어떻게 이루어지는지를 이해하는 것이 중요하다. 그래야 행과 열의 수를 잘 맞추어 계산을 할 수 있기 때문이다. 이 글에선 Keras를 사용한 코드에서 실제 행렬 연산이 어떻게 이루어지는지 그림으로 도식화하여 설명하고자 한다. 아래와 같은 간단한 딥러닝 모델을 구성하는 코드가 있다고 해보자. network.add(layers.Dense(512, activation='relu', input_shape=(28*28,))) network.add(layers.Dense(10, activation='softmax')) network.fit(train_images, train_labels, epochs=5, batch_size=128) keras의 Dense() 메서드 안의 수는 ..
본 글은 밑바닥부터 시작하는 딥러닝 포스팅에 이어 핸즈온 머신러닝 2판(오렐리앙 제롱 지음) 책을 공부한 것을 요약한 것으로 밑바닥 딥러닝 책에 나오지 않는 개념들 위주로 정리한다. 나오지 않는 개념이나 기본적인 개념들을 밑바닥부터 시작하는 딥러닝에 포스팅하였으니 먼저 보고 오기를 추천한다. 이진 분류기 훈련 문제가 복잡할 때는 단순화해서 검증을 해보는 것이 유용하다. 예를 들어, MNIST 손글씨 분류 문제에서는 0~9까지 10개의 클래스에 대해 한 번에 검사하기 보단 '5-감지기'와 '5아님-감지기' 두 개의 클래스를 구분할 수 있는 이진 분류기(binary classifier)를 구현해 테스트 해보는 것이다. 성능측정 1. 교차 검증을 사용한 정확도 측정(k-fold cross validation)..
본 글은 밑바닥부터 시작하는 딥러닝 포스팅에 이어 핸즈온 머신러닝 2판(오렐리앙 제롱 지음) 책을 공부한 것을 요약한 것으로 밑바닥 딥러닝 책에 나오지 않는 개념들 위주로 정리한다. 나오지 않는 개념이나 기본적인 개념들을 밑바닥부터 시작하는 딥러닝에 포스팅하였으니 먼저 보고 오기를 추천한다. 머신러닝 시스템의 종류 사람의 감독 하에 훈련하는 것인지 아닌지(지도, 비지도, 준지도, 강화 학습) 실시간으로 점진적인 학습을 하는지 아닌지(온라인, 배치 학습) 어떻게 일반화 되는가 : 단순히 알고있는 데이터 포인트와 새 데이터 포인트를 비교하는 것인지 아니면 과학자들이 하는 것처럼 훈련 데이터셋에서 패턴을 발견하여 예측 모델을 만드는지(사례기반, 모델기반 학습) 지도학습(supervised learning) -..
L1, L2 regularization은 모두 overfitting을 막기 위해 사용된다. 두 개념을 알기 위해 필요한 사전개념들이 있다. 이들을 순차적으로 알아보자. Norm Norm은 벡터의 크기(길이)를 측정하는 방법(혹은 함수)이다. 두 벡터 사이의 거리를 측정하는 방법이기도 하다. - p는 Norm의 차수, p=1이면 L1 Norm이고, p=2이면 L2 Norm - n은 해당 벡터의 원소 수 L1 Norm - L1 Norm은 쉽게 말해 벡터 p,q의 각 원소들의 차이의 절댓값의 합 L2 Norm - L2 Norm은 벡터 p, q의 직선 거리 - q가 원점이라면 벡터 p, q의 L2 Norm은 벡터 p의 원점으로부터의 직선거리 L1 Norm과 L2 Norm의 차이 - 검정색 두 점 사이의 L1 N..
- 딥러닝이란 층을 깊게 한 신경망 데이터 확장(data augmentation) - 입력 이미지(훈련 이미지)를 알고리즘을 동원해 '인위적'으로 확장한 것 - 데이터가 적을 때 효과적인 수단 - 간단하지만 정확도 개선에 효과적 - 회전, 이동에 의한 변형 - 이미지 일부를 잘라내는 crop - 좌우를 뒤집는 flip - 크기변화(scale), 밝기수정 등. 층을 깊게 하는 것의 이점 - ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 대규모 이미지 인식 대회에서 최근 상위를 차지한 기법 대부분은 딥러닝 기반이며 그 경향은 신경망을 더 깊게 만드는 방향으로 가고 있다.(층의 깊이에 비례해 정확도가 좋아진다.) - 깊은 신경망은 그렇지 않은 경우보다 ..
합성곱 신경망 CNN은 Convolutional Neural Network의 약자이다. 이미지 인식과 음성 인식 등 다양한 곳에서 활용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 CNN을 기초로 한다. CNN의 구조 - 완전연결 신경망(fully-conected) : 인접하는 계층의 모든 뉴련과 결합 - 완전히 연결된 계층을 Affine 계층이라는 이름으로 구현 - CNN : 합성곱 계층(Conv)과 풀링 계층(Pooling)이 추가됨. - Conv -> ReLU -> (Pooling) 흐름으로 연결(Pooling은 생략되기도 함) - 지금까지의 Affine -> ReLU 연결이 Conv -> ReLU -> Pooling으로 바뀌었다고 생각하면 쉽다. - 마지막 출력 계층에선 Affi..