Altiora Petamus
[나만의 글쓰기] 1주차 회의록 본문
1. 학습 내용
SSAC X AIffel 에서 1주동안 배운 내용들을 나의 생각과 함께 요약한다.
글의 순서는 시간 순서로 진행된다.
1-1. Ubuntu 18.04 환경설정
_본격적인 설정을 하기에 앞서 Linux Ubuntu 운영체제와 Tensorflow에 대한 것을 알 수 있었다. _
Linux란 window같이 우리가 컴퓨터를 쉽게 다룰 수 있게 하기 위해 만들어진 운영체제로 Ubuntu는 Linux의 배포판중 하나이다.
Ubuntu는 앞으로 개발을 하는 환경에서 이용할 수많은 라이브러리를 사용하는데 안정적으로 구동이 되는 운영체제이다.
window를 사용해도 되지만 개발환경을 하기엔 안정적인 환경은 아니기에 대부분 Ubuntu에서 개발이 이루어 진다.
Ubuntu는 많이 다뤄본적이 없지만 앞으로 사용하다보면 익숙해 질거라고 생각한다.
_먼저 Terminal을 이용하여 가상환경을 설정한다. _
가상환경은 Anaconda를 이용하여 설정한다.
가상환경이란 하나의 방 같은 개념으로 목적성에 따라 필요한 라이브러리들만 설치하고 그 가상환경에 진입했을 때, 목적에 따른 최적의 도구들로 구성된 환경에서 작업을 가능하게 한다.
Anaconda를 이용하여 가상환경을 설정하는 방법은이전에 작성한 글에 자세하게 나와있다.
https://qpwoei1222.tistory.com/5
위 과정을 요약하자면
Anaconda 설치 -> Graphic Driver 설치 -> 가상환경 생성 및 라이브러리 설치
의 과정으로 진행된다.
이전에 Ubuntu를 개발의 목적으로 잠시 사용했던 적이 있었는데 그때는 가상환경이 필요 없다고 생각하여 사용하지 않았었다. 그러다 설치프로그램끼리의 충돌로 인해 OS를 몇 번이고 재설치 했던 경험이 있다.
가상환경의 정의를 알고 그에 따른 장점을 생각해보니 이전의 내가 부끄러워 졌다.
다음으로 커널을 연결하였다.
Aiffel의 학습은 lms웹 페이지에 학습 내용과 코드들 , 문제를 해결하면서 이루어진다.
이 때 웹의 코드를 나의 가상환경과 연결해주는 다리가 필요한데 그것이 바로 커널(kernel)이다.
커널은 주피터 노트북을 이용하여 연결하게 된다.
주피터 노트북을 이용하여 해당 포트번호와 토큰을 잘 기입해 주면 손쉽게 연결이 가능하다.
커널은 local의 환경에서 주피터 노트북을 사용할 때도 사용된다.
굉장히 유용한 기능인 것 같다.
1-2. CS231n Lec.02 - Image Classification
CS231n은 미시간대학의 Justin Johnson교수님께서 진행하신 CV위주의 머신러닝 강의이다.
머신러닝의 강의로써 평판이 굉장히 높으며 머신러닝을 하는 사람이라면 누구나 한번쯤 수강하였다는 강의였다.
강의는 영어로 진행이되며 유튜브 번역프로그램을 이용하여 학습을 진행하였다.
번역기를 이용하여도 번역이 부자연 스러운 경우가 많았고, 교수님의 말씀 또한 빨랐다.
딥러닝에 대한 사전지식이 깊지 않았던 나로써는 처음 강의를 들을때, 내용을 이해하는 것이 쉽지 않았다.
그래서 추가 자료를 찾아보면서 같이 학습을 진행하였고 그 후에야 영상강의의 내용이 어느정도 와 닿았었다.
특히나 퍼실리레이터님들이 올려주신 질문목록은 강의수강이 다 끝나고 다시한번 중요한 포인트를 되짚어 보는데 큰 도움이 되었다.
강의의 내용은 CV를 중점으로 머신러닝을 깊게 다루었으며 내용을 잘 이해하고 끝까지 듣는다면
확실히 도움이 많이 될 것 같은 느낌이 들었다.
하지만 언어의 장벽의 문제가 심각하기 때문에 앞으로 쉽지만은 않을 것 같다.....
1-3. 인공지능과 가위바위보!
이번 수업에서는 간단한 딥러닝을 구현하는 내용이었다.
일반적으로 딥러닝 기술은
*데이터 준비 -> 딥러닝 네트워크 설계 -> 학습 -> 테스트(평가) *
이다.
첫번째로 시도한 딥러닝은 MNIST다.
Tensorflow의 표준 API인 Keras를 이용하였다.
이전에 Keras를 공부한 경험이 있다. 이를 바탕으로 이해를 하다보니 어렵지 않게 수행했던 것 같다.
MNIST에서의 학습 순서는 다음과 같다.
- 데이터의 전처리
- 네트워크 설계
- 평가
MNIST에서 실제 결과를 확인해 보는 것을 해보았고 다음으로 직접 만든 데이터로 모델을 학습시키는 작업을 해 보았다.
카메라를 이용하여 쉽게 총 300장의 데이터를 만들 수 있었고 MNIST의 학습 코드를 변형항여 학습을 진행하였다.
데이터의 수가 300장 밖에 없다보니 정확도는 매우 낮았다. 그래서 팀원의 데이터들을 모두 취합하여 총 3000장의 TRAIN데이터를 마련하였고 이를 이용하여 학습을 시킨 결과 정확도는 처음 결과의 두배인 65%가 나왔다. 학습을 시킬 때마다 결과가 약간씩 다르게 나오기는 했지만 만족스러운 결과였다. 무엇보다도 직접 마련한 데이터로 학습을 시켰다는 것이 나에겐 새롭게 다가왔다.
1-4. 개발자를 위한 첫번째 필수교양
이번 수업에서는 Git 과 Github를 이용하여 자신의 코드를 저장하고 공유하는 방법을 배웠다.
처음 Git의 동작법을 배웠을 때는 너무 낮설었지만 알면 알수록 굉장히 유용한 기능이라는 것을 알 수 있었다.
앞으로 GitHub에 많은 코드들을 commit하여 1일 1commit을 실천할 생각이다.
또한 Jupyter notebook과 Markdown에 대해서도 배웠다.
Jupyter notebook은 직관적으로 와닿아서 어렵지 않았지만 markdown은 익숙해지는데 시간이 걸릴것 같다.
하지만 익숙해지면 그만큼 편한것이 없기에 노력할 생각이다.
1-5. Scikit-learn
Scikit-learn 라이브러리를 이용하여 내장 데이터를 분류하는 딥러닝 모델을 만들어 보는 것을 해 보았다.
데이터의 기본 구조를 파악하는 것은 생각보다 흥미로웠다.
잘 정리되어 있기때문에 어려운 부분도 없었다.
다만, 딥러닝 모델의 평가지표라는 것을 이해하는데는 시간이 걸렸었다.
단순 정확도만이 모델의 평가지표가 아니라 데이터의 질과 양에 따라 정확도가 높게 나와도
그 모델은 정확하지 않다는 것은 새로웠다.
또한 여러가지 학습모델이 있었다.
random forest , logistic regression등 , 모델들 마다 학습 알고리즘이 달랐는데 그부분은 솔직히 아직도 정확히 이해가 되지 않는다. 하지만 이러한 세세한 부분을 공부하고 연구해야 딥러닝을 비로소 "할 줄 안다."인것 같다.

2. 학습 내용 요약
- 환경설정
* Anaconda
* kernel - CS231n
- 인공지능과 가위바위보
* MNIST
- 필수교양
* Git / GitHub
* Jupyter note book
* Markdown - Scikit-learn
* 학습모델 (random-forest / logistic regression ...)
* 평가지표
3. 회의록
하루에 최소 12시간 컴퓨터를 들여다 보고있는 중이다.
느낀점은
할 일 많다.!
많이 공부하는 만큼 정리하고 이해해야 하는 부분도 늘어나다 보니 그 양이 끝도 없다.
하지만 모두 나의 피와 살이 되는 것이기 때문에 하기 싫어도 하는 수 밖에.
나는 아직 부족한 부분이 너무 많은것 같다.
먼저 모든 것을 너무 완벽하게 하려다 보니까 작업시간이 항상 늦어진다.
나의 완벽은 무식한 완벽이다. 지금도 회의록을 쓴다 해놓고 위에 내용들을 주구장창 늘어놓아버렸다.... (하,....ㅋ )
완벽한 것은 좋지만 영리하게 할 필요가 있을 것 같다.
또한 기본기를 튼튼하게 할 필요가 있을 것 같다.
특히 코딩부분에서 그 필요성을 느꼈다.
기본기를 확실히 다져 코딩 테스트를 쓸어버릴 계획이다.
TODO LIST
- 블로그에 PYTHON / Markdown 문법 요약 정리
- 어려웠던 노드 복습 및 내용 정리
- 1일 1commit
'SSAC X AIffel > 회의록' 카테고리의 다른 글
[나만의 글쓰기] 5 주차 회의록 (0) | 2021.02.17 |
---|---|
[나만의 글쓰기] 4 주차 회의록 (1) | 2021.01.29 |
[나만의 글쓰기] 2,3 주차 회의록 (1) | 2021.01.22 |