2021. 1. 21. 18:21ㆍ언어영역/Machine Learning
머신러닝 야학 종료!
Opentutorials에서 제공하는 머신러닝 야학 2기가 1월 19일을 끝으로 마무리됐다. 머신러닝 야학에서는 Orange3, Python, JavaScript 등의 툴로 머신러닝을 배울 수 있는 기회가 주어졌는데, 나는 그 중에서 Python 강좌를 수강했다. 수업은 기본적인 파이썬 지식이 없음에도 이해가 갈 정도로 수업은 쉽고 친절하게 설계되었고, 중간중간 학생들을 상당히 독려해주었다. 나만 그런 줄 알았는데, 졸업식 때 시청자들의 후기들을 보면서 그러한 독려 문구가 나뿐만 아니라 생각보다 많은 사람들에게 도움이 되었다는 걸 깨달았다. 확실히 도움이 되는 수업이었다.
그러나 이제 다시 막막해진다. 확실히 과거에 비해서는 아는 게 많이 생겼다. 하지만 문제는 아는 것보다 모르는 것, 궁금한 것들이 훨씬 더 많이 생겼다는 것. 선형대수가 궁금해졌고, 파이썬이 궁금해졌고, Activation 함수는 또 뭐가 그렇게 많은지, loss function과 metrics는 또 뭔지 등등... 너무 많은 물음표들이 서 있으니, 오히려 어디서부터 시작해야 할 지가 막막했다. 뭘 공부해야 할 지 궁금해하는 게 마냥 행복한 고민은 아니었다.
Coursera
그러던 와중에 Coursera에 대해서 알게됐다. 아니, 사실은 이미 알고 있었다. 고등학교 재학 시절에 1주일 Free Trial을 끊어놓고 실수로 결제까지 해 버려, 고객센터에 문의했던 흑역사가 있기 때문(...). 어쨌든 Opentutorials의 질문 섹션에서 DeepLearning.AI TensorFlow Developer 전문 자격증를 발급받을 수 있는 강의가 있다는 소문을 듣고, 여기서부터 다시 시작해야겠다고 생각했다.
사실 Coursera에서 다시 진행하는 수업은, 적어도 Course 1(이 전문 자격증은 4 Course로 이루어져 있고, 이 글의 제목이 Course 1이다.)에서는, 머신러닝 야학에서 배운 것들의 반복이었다. 아마 코스 1을 배우면서 의미있게 알게 됐다고 느낀 건 callback함수밖에 없지 않을까... 그럼에도 불구하고 Coursera에서 다시 강의를 듣기로 결단을 내린 건, 너무나도 화살표가 많아 어디로 갈 지 모를 땐, 왔던 길을 다시 한번 짚어보는 게 도움이 되지 않을까 싶어서이다. 내가 아직도 뭐가 우선적으로 공부해야 할 분야인지 감을 잡지 못했다면, 그건 아마도 내 공부가 부족하다는 뜻 아닐까? 그렇다면, 다시 한번 왔던 길을 이번에는 조금 다른 방식으로 산책하는 것도 좋지 않을까? (또 내 포트폴리오도 꾸미고 싶은 마음이 생기기도 했고.)
어쨌든 그런 마음으로 Coursera의 Introduction to tensorflow for Artificial Intelligence, Machine Learning, and Deep Learning 코스 1을 어제부로 마무리했다. 사실 처음엔 영어라는 언어의 장벽에 대해 걱정하고 있었는데, 의외로 '자동번역'이라는 두 번째 장벽이 나를 막아서는 더 큰 장애물이었다. Epoch를 신기원이라고 해석하질 않나... 🥲 사람이 번역한 거라면 괜찮았지만 그렇지 않아 자동 번역기가 담당한 부분은 차라리 자막을 끄고 보는 게 나았다. 나중에는 스트레스가 극에 달해 '번역에 도움 주기' 버튼을 눌러 몇 중요 강좌에 번역에 참여했다.
어쨌든 이렇게 다사다난한 강좌를 겪으면서, Course 1을 마무리했다. 비록 인강이라 산업체에서 인정이 크게 되거나 하지는 않는다고는 하지만... 우리가 문학을 읽을 때 취업에 대해 생각하지 않는 것처럼, 나도 내 내실을 다지는 거라고, 내 가치를 밑천을 늘리는 거라고 생각하며 계속해서 공부해야겠다.
Callbacks
콜백은 특정 상황에서 Epoch를 아직 모두 완료하지 않았음에도 Model Fit을 중단시킬 수 있는 함수이다. 아래는 metrics의 accuracy가 99.9%보다 클 때 "Reached 99.9% accuracy so cancelling training!"이라는 문구를 출력시키며 Model Fit을 중단시킨다. 이로써 트레이닝 셋으로의 Overfitting을 막을 수 있다.
class myCallback(tf.keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
if(logs.get('acc')>0.999):
print("\nReached 99.9% accuracy so cancelling training!")
self.model.stop_training = True
callbacks = myCallback()
...(모델 fitting 상황에서)
model.fit(training_images, training_labels, epochs=5, callbacks=[callbacks])
'언어영역 > Machine Learning' 카테고리의 다른 글
실패 기록 (0) | 2021.02.23 |
---|---|
Tensorflow 102 -7.1~13 (0) | 2021.01.14 |
Tensorflow 102 - 7~8 Conv2D (0) | 2021.01.14 |
Tensorflow 102 5-6 특징 자동 추출기 (0) | 2021.01.13 |
Mahcine Learning 야학 102 - 1~4, 차원 알아보기 (0) | 2021.01.10 |