문과생도 이해하는 딥러닝 (10) - 배치 정규화
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/44?category=632408 이전 포스팅에서는 초기 가중치 설정에 따라서 활성화 값의 분포가 어떻게 나타나는지 파악했으며 활성화함수 별로 적절한 초기 가중치 설정 방법이 있다는 것을 알았다. 이번에는 또다른 이슈에 대해 다루고자 한다. 4번째 포스팅에서 배치(Batch)에 대해서 포스팅을 했었다. 배치는 일종의 랜덤 샘플링으로 전체 학습데이터를 한 번 학습할 때 다 학습에 사용하면 많은 시간이 걸리기 때문에... (수천만, 수억 개의 데이터를 한 번에 다 사용한다면???) 미니배치 방식으로 랜덤하게 학습 데이터에서 배치 크기만큼 꺼내서 한 번의 학습에 사용하는 방식이다. 이번 포스팅에서 다루는 배치 정규화는 초기 가중치 설정 문제와 비슷하게 가중..
문과생도 이해하는 딥러닝 (9) - 신경망 초기 가중치 설정
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/43?category=632408 이전 포스팅에서는 최적화 기법들을 살펴보면서 최적의 가중치 매개변수를 찾기 위해 어떤 것들을 사용하는지 알아보았다. 확률적 경사하강법 이외에도 다양한 방법으로 적절한 기울기 값을 구하고 손실함수가 낮아지는 방향으로 계산(또는 학습)하는 방법들이 있으며 자신의 문제에 따라 적합한 방법을 사용하는 것이 좋다. 최적화 만큼 초기 신경망의 가중치 값을 어떻게 설정하느냐도 상당히 중요한 문제이다. 초기값을 무엇으로 하느냐에 따라서 학습의 성패가 결정나기도 한다. 신경망 초기 가중치 설정 문과생도 이해하는 딥러닝 (9) 가중치 초깃값을 0으로 하면? 가중치의 초기값을 0으로 default를 주고 시작하면 올바른 학습을 기대하기 ..
문과생도 이해하는 딥러닝 (8) - 신경망 학습 최적화
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/42?category=632408 지금까지 신경망이 이론적으로 어떻게 구성되고 이를 코드로 어떻게 구현하는지 살펴보았다. 딥러닝은 깊은 신경망 계층을 말하며 수 많은 모듈의 조합으로 이루어진 것이라고 볼 수 있다. 따라서 모듈과 함수가 많은 만큼 각각에 대한 하이퍼파라미터(hyper-parameter)가 많다. 하이퍼파라미터를 어떻게 설정하느냐에 따라서 학습의 결과가 천차만별로 달라질 수 있다. 딥러닝 모델 학습에서 많이들 중요성을 간과하는 부분이 이 최적화 부분이다. 신경망을 생성하면서 이 최적화 문제에 대해서 끊임 없이 고민해야 한다. 이는 Input으로 넣는 데이터와의 직접적인 연결성도 있으며 하이퍼파라미터에 따른 모델의 변화를 어느정도 이해하고..
문과생도 이해하는 딥러닝 (7) - 오차역전파법 실습 2
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/41?category=632408 오차역전파법은 계층 형태로 순전파와 역전파를 메서드로 구현하여 효율적으로 기울기를 계산할 수 있도록 모듈화하여 신경망의 layer를 자유롭게 쌓고 쉽게 만들며 계산 속도를 빠르게 해준다. 딥러닝의 신경망 학습 모형은 이러한 layer들과 그 안의 함수들을 모듈로서 레고 블럭을 조립하듯이 조립하여 신경망을 구현할 수 있다. 오차역전파법 실습 2 문과생도 이해하는 딥러닝 (7) 앞선 "신경망 학습 실습" 포스팅에서는 순전파만을 고려하였고 기울기 계산을 수치 미분으로 하면서 계산이 오래 걸려서 결국.... 결과를 내지 못했다. 다행히 이번 오차역전파를 적용한 실습에서는 계산이 빨라 신경망 학습에 대한 결과까지 그래프로 확인..
문과생도 이해하는 딥러닝 (6) - 오차역전파법 실습 1
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/39?category=632408 지난 시간에는 구축한 신경망을 어떻게 학습해야 하는지 학습에 필요한 개념들에 대해서 다루었고 실제로 학습을 진행해보았다. 경사하강법을 이용해 수치미분으로 기울기를 계산하는 것은 계산 시간이 너무나 오래 걸려서 모델의 학습 시간이 굉장히 길었다. 학습을 할 때 사용되는 하이퍼파라미터(hyperparameter) 들에 대해서 알 수 있었으며 왜 가중치 갱신을 할 때 기울기를 구하는지, 손실함수는 왜 계산하는지, epoch의 정확한 의미는 무엇인지, 미니배치를 왜 사용하는지 등등 딥러닝의 핵심 개념들을 제대로 알 수 있었다. 이번에는 지난 포스팅에서 신경망을 학습하면서 수치미분으로 기울기를 계산하면서 학습시간이 굉장히 길어..
가장 빨리 만나는 docker
·
IT기술 관련/기타 기술
http://www.pyrasis.com/book/DockerForTheReallyImpatient/Chapter01
bagging , boosting, stacking (배깅,부스팅,스태깅)
·
IT기술 관련/A.I 인공지능
출처:https://swalloow.github.io/bagging-boosting 오늘은 머신러닝 성능을 최대로 끌어올릴 수 있는 앙상블 기법에 대해 정리해보았습니다.​Ensemble, Hybrid Method앙상블 기법은 동일한 학습 알고리즘을 사용해서 여러 모델을 학습하는 개념입니다. Weak learner를 결합한다면, Single learner보다 더 나은 성능을 얻을 수 있다는 아이디어입니다. Bagging 과 Boosting 이 이에 해당합니다.동일한 학습 알고리즘을 사용하는 방법을 앙상블이라고 한다면, 서로 다른 모델을 결합하여 새로운 모델을 만들어내는 방법도 있습니다. 대표적으로 Stacking 이 있으며, 최근 Kaggle 에서 많이 소개된 바 있습니다.​BaggingBagging은 샘..
문과생도 이해하는 딥러닝 (5) - 신경망 학습 실습
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/38?category=632408 신경망 알고리즘으로 모델을 만들고 학습하는 방법에 대해 간단하게 실습을 진행하였다. 그리고 학습할 때 필요한 필수 개념인 손실함수, 배치, 기울기, 학습률에 대해서 알아보았다. 수학적 개념만으로는 이해하기 어려운 부분들이 다소 있었으나 코드를 보면서 진행하니 확실히 각 개념과 역할에 대해서 이해하기 수월하였다. 신경망 학습 Learning 실습 문과생도 이해하는 딥러닝 (5) 인공신경망(Neural Network)도 다른 머신러닝 알고리즘의 모델들 같이 모델에 대한 학습이 필요하다. 지금까지 배운 것은 모델을 구축하기 위해 필요한 개념이나 기능 등에 대한 것이었다면 설계한 모델을 학습용 데이터를 가지고 어떻게 학습할 ..
문과생도 이해하는 딥러닝 (4) - 신경망구현, 활성화함수, 배치
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/37?category=632408 간단하게 MNIST 데이터를 이용해서 숫자를 구분할 수 있는 인공신경망 구현을 실습해보았다. 그리고 앞으로 계속 사용되는 주요 개념들에 대해서 복습을 진행하였다. Sigmoid 함수, ReLU 함수, Softmax 함수, Batch 개념 등을 또한 다루었다. 앞으로 계속 중요하게 다루는 개념이므로 직접 코드를 치면서 짚어볼 필요가 있었다. 신경망 복습 Neural Network 문과생도 이해하는 딥러닝 (4) 1. Sigmoid 함수 지난 포스팅에서 시그모이드 함수를 다루었고 뉴런의 활성화함수로서 계단함수와 비교했을 때 비선형적으로 매끄럽게 값을 출력할 수 있기 때문에 사용한다고 하였으며, 이진 분류 문제를 위해 주로..
문과생도 이해하는 딥러닝 (3) - 오차 역전파, 경사하강법
·
IT기술 관련/A.I 인공지능
출처: https://sacko.tistory.com/19?category=632408 이전 시간까지 신경망이 무엇인지 어떻게 생긴 것인지 작동원리 등을 살펴보았다. 이후의 책에서 다루는 내용은 갑자기 난이도가 점프하는 느낌이 있어 필수 개념들을 빠르게 숙지하고 간단하게라도 전체적인 신경망을 끝까지 구현해볼 필요가 있다는 생각이 들어서 조금 더 쉬운 교재에서 내용을 다루고 다시 밑바닥으로 돌아가기로 했다. 오차 역전파, 경사하강법 문과생도 이해하는 딥러닝 (3) 1. 오차 역전파 Error Backpropagation 2. 경사하강법 1. 오차 역전파 Error Backpropagation 지난 시간까지는 Input에서 Output으로 가중치를 업데이트하면서 활성화 함수를 통해서 결과값을 가져오는 것까지..