Machine Learning 14

[DSL] Improving Deep Neural Networks Week 1 : Practical aspects of Deep Learning

다음 코스도 바로 시작했다. 제목으로 내용을 유추해보자면, 저번 코스에서 대략 머신 러닝, 딥 러닝 모델이 어떤 방식으로 작동하는지 파악했으니 이번엔 그 모델을 더 잘 작동할 수 있도록 만드는 방법을 익히는 것이 목표인 것 같다. 우선, 데이터를 나누는 방법부터 시작한다. 아무리 내가 머신 러닝 무식자라지만, 데이터를 학습용, 검증용, 테스트용으로 나누는 것 정도는 알고 있었다. 이 강의에서는 검증용을 개발용이라는 용어로 사용한다. 빅데이터 시대가 되면서 데이터 양이 폭발적으로 증가했기 때문에, 원래 60/20/20 정도로 나누던 비율이 극단적으로 99.5/0.4/0.1 이렇게 바뀌어도 괜찮다는 사실을 새로 알게 됐다. 테스트용이 고작 0.1%라도 10000개 정도 되면 모델을 테스트하기에는 충분하다는 ..

[DSL] Neural Networks and Deep Learning Week 4 : Deep Neural Network

미션 1의 마지막 주차. 정말 새로운 내용은 없었고 지금까지 한 내용의 확장 + 정리하는 느낌이었다. 아직 코딩이랑 퀴즈는 안 해서 걔네는 잘 모르겠다. 우선은 notation부터 정리하자. 이전이랑 거의 똑같기 때문에 이제는 좀 익숙해진 것 같다. 이전과 다른 점이라면 Layer가 깊어지면서 L이라는 변수가 생겼고, Activation Function을 g로 표현했다 정도? 앞으로 벡터가 막 여러 개 나오면 각 벡터마다 차원이 헷갈린다. 그래서 우선 각 변수들의 shape을 확실히 하고 가는 게 좋을 것 같다. Train Set의 크기를 m이라고 생각하자. 그리고 gradient로 만들어도 shape은 변하지 않는다. b는 열 벡터이지만 계산 시에 브로드 캐스팅된다. 이쯤에서 왜 굳이 레이어를 깊게 쌓..

[DSL] Neural Networks and Deep Learning Week 3 : Shallow Neural Networks

Week 2에는 이진 분류 문제를 해결하기 위해 상당히 간단한 Logistic Regression 모델을 만들었다. Week 3에는 이 모델을 조금 더 확장하는 방법에 대해서 배웠다. 역시 새로운 notation부터 정리하는 게 정신 건강에 이롭다. 우선 각각의 동그라미는 노드라고 부른다. 그리고 층이 하나 더 생기면서 위 첨자로 [1], [2]가 생긴 걸 볼 수 있다. Input Layer를 [0]이라고 생각하고 왼쪽부터 오른쪽으로 번호를 하나씩 증가시킨다. 여기서는 Hidden Layer가 하나밖에 없기 때문에 [1]이 Hidden Layer이고 [2]가 Output Layer다. Hidden Layer의 이름이 Hidden인 이유는 노드 값을 실제로 관찰할 수 없기 때문이다. 억지로 계산하지 않는 ..

[DSL] Neural Networks and Deep Learning Week 2 : Neural Networks Basics

드디어 머신러닝 기초 강의를 듣기 시작했다. 지금까지는 머신 러닝에 대한 지식이 필요하면 생존형으로 필요한 부분만 어찌어찌 공부했었는데 이 기회에 기초를 탄탄히 하고 싶다. 사실 이미 1주 차도 있었지만, 딱히 정리까지 필요해 보이지는 않아서 생략했다. 우선은 머신 러닝에 쓰이는 notation들부터 정리했다. 용어 정의가 헷갈리기 시작하면 답도 없기 때문에 다른 주차는 정리를 안 해도 이번 주차는 정리하고 넘어가는 게 좋다고 생각했다. 지금까지 그냥 대충 그렇겠거니 하면서 넘어온 애들이라서 확실히 해두는 게 나중에 안 헷갈린다. 그리고 이진 분류 문제를 해결하기 위해서 Logistic 회귀 문제에 대해 배웠다. Logistic 회귀는 이전에 계량경제학 수업을 들으면서도 잠깐 배웠기 때문에 어느 정도 익..