이번 주부터 새로운 강사님께 수업을 배우기 시작했습니다!
새롭게 부임하신 강사님은 Linux, C, Python, 딥러닝 등의 기술에 능한 분이신데요.
강사님의 기술 스택 및 강의 이력을 보자마자... 이 분에게서 장인의 아우라를 느꼈답니다....!
CS 근본을 다 챙기는 동시에, 오픈 소스를 통해 트렌드를 지속적으로 받아들이고 계신 분이라는 게 보였어요.
기본기 및 원리에 초점을 맞추고 강의를 진행하시는 모습이 인상적이었어요.
그동안 제가 꿈꿔왔던 시니어 개발자 모습과 흡사하셔서 깜짝 놀랐답니다!
이런 분을 만나 뵐 수 있도록 자리를 조성해 주신... 엔코아 회사, 플레이 데이터 매니저님들, sk 관계자분들께 감사함을 표현하고 싶습니다...!
열심히 공부해서 강사님의 노하우를 제 것으로 만들어야겠어요 ^_^
저 역시 근본 있는 개발자가 되기 위해 노력하겠습니다!!
● 성취
월요일에 미니 프로젝트 1개를 마무리 지었어요!
머신러닝 모델을 사용해서 이탈 고객을 예측하는 것이 프로젝트의 주제였는데요.
이전에 호흡을 맞췄던 팀원들 위주로 배정된 덕분에 초반 탐색 시간을 아낄 수 있었습니다.
크롤링이 주제였던 이전 팀플에서는 코딩 경험자 위주로 활약을 한 덕분에 비전공자들이 나설 수 있는 기회가 적었어요.
따라서 이번에는 비전공자인 팀원들도 코드 작업에 참여할 수 있도록 역할 배치에 신경을 썼습니다.
프로젝트 결과보다 모두가 과정 속에 녹아드는 게 더 중요하다고 생각했습니다.
실수를 실패라고 낙인 찍지 않고 도전에 의의를 두는 분위기를 형성하기 위해 노력했어요.
그 결과로 모든 팀원들이 데이터 전처리, EDA, 머신러닝 모델 학습에 균등하게 참여할 수 있었습니다.
비전공자들도 포함해서요!
사실 이번 프로젝트는 1차 미니 플젝에 비해 점수를 살짝 낮게 받았어요.
그렇지만 이번 프로젝트를 계기로 '팀 내부 동기 부여 방식'에 대해 생각해 볼 수 있었습니다.
점수보다는 머신러닝 과정에 모든 이들을 참여시킴으로써 자신감을 부여하고 싶었습니다.
특히 다른 분들이 편하게 참여할 수 있도록 심리적 안정감을 위한 판을 깔아주고 싶었어요.
이 자료에 나오는 내용처럼요! 어차피 저는 머신러닝 경험이 사전에 있었기도 했구요...^^
점수는 일시적이지만, 머신러닝을 대하는 태도야말로 장기적으로 가져가야 하는 가치이니까요!
마지막으로... 저를 믿고 PM 역할을 부여해 준 팀원들(재민, 재원 오빠, 준영 오빠)에게 감사함을 표현하고 싶습니다!
다들 포기하지 않고 열심히 참여하느라 고생 많았어!
따봉따봉~~
● 학습
새로 오신 강사님과 함께 '밑바닥부터 시작하는 딥러닝 1(축약어 : 밑시딥)'을 공부했습니다.
matplotlib, numpy 라이브러리만을 사용하여 딥러닝의 근간 원리를 구현하는 책인데요.
이 책 자체로도 상당히 유익하지만, 강사님의 풍부한 배경 설명 덕분에 더 풍성하게 즐길 수 있었습니다!
이번 주차에는 수업이 끝난 후에 다시 읽었던 '밑바닥부터 시작하는 딥러닝 1' 내용의 일부를 정리하려 합니다.
참고로 저는 1장(헬로 파이썬)과 2장(퍼셉트론)까지 다시 읽었습니다.
# 파이썬 버전
파이썬은 버전 2, 버전 3으로 크게 나눌 수 있습니다.
이 둘은 명령어가 100% 호환되지 않으므로 조심해야 하는데요.
이는 '하위 호환성'이 없기 때문입니다.
JavaScript와 반대 상황이라고 생각하시면 좋을 것 같아요!
참고로 '밑시딥'이라고 불리는 해당 책에서는 버전 3를 사용했습니다.
# 파이썬 속도 보완
파이썬과 같은 '동적 언어'는 정적 언어(C, C++ 등)에 비해 속도가 느려요.
그래서 빠른 연산 속도가 필요한 핵심 부분은 C/C++ 로 구현하기도 해요.
C/C++로 구현한 부분을 다시 파이썬으로 감싸면, 느린 파이썬 속도를 어느 정도 보완할 수 있어요.
그래서 numpy 라이브러리가 파이썬에 속하는 것 치고는 속도가 빠른 것이랍니다!
단, numpy 라이브러리는 알고리즘 테스트에서 import 하는 것이 불가능하므로 실무나 과제 테스트에서만 사용 가능하답니다...!
# 벡터, 행렬, 텐서
1차원 배열을 '벡터(vector)'로 칭하고, 2차원 배열을 '행렬(matrix)'라 불러요.
더 나아가 3차원 이상의 배열을 '다차원 배열'이라 부릅니다.
벡터, 행렬, 다차원 배열을 합쳐서 '텐서(tensor)'라 해요.
구글의 딥러닝 프레임워크인 'TensorFlow' 이름도 여기서 유래했어요.
텐서가 신경망을 타고 흐르는 모습이 연상되네요!
# 퍼셉트론(Perceptron)
'퍼셉트론'은 프랑크 로젠블라트(Frank Rosenblatt)가 1957년에 고안한 알고리즘입니다.
딥러닝 이론 자체가 퍼셉트론에서 유래했기 때문에 중요한 개념에 속한답니다!
퍼셉트론을 사용하면 다수의 신호를 입력으로 받아서 하나의 신호를 출력할 수 있어요.
멋있죠? 하지만 이러한 퍼셉트론 개념이 만능은 아닙니다!
단층 퍼셉트론(single-layer perceptron) 만으로는 XOR 문제를 해결할 수가 없어요.
이 XOR 문제를 해결하기 위해서는 퍼셉트론을 2층 이상 쌓아야 합니다.
이러한 퍼셉트론을 다층 퍼셉트론(multi-layer perceptron)이라고 합니다.
+) 참고로 1층에 NAND 게이트와 OR 게이트를, 2층에 AND 게이트를 지정함으로써 XOR 문제를 해결할 수 있습니다!
제 어린 시절에 자주 듣던 노래 중에서 '나인뮤지스-와일드'라는 곡이 있는데요.
그 곡에서 '하나보단 둘이 더 강하잖아'라는 가사가 나옵니다.
저는 이게 꼭 다층 퍼셉트론처럼 느껴지더라구요ㅋㅋㅋ
# 가중치(weight)와 편향(bias)
'가중치'를 통해 각 입력 신호가 결과에 미치는 영향력을 조절할 수 있어요.
즉, 가중치 값이 작으면 영향력을 적게 행사할 수 있고요.
이 값을 키우게 되면 큰 영향력을 행사하는 것이 가능해집니다.
'편향'은 뉴런을 얼마나 쉽게 활성화시킬 것인지 결정하는 요소입니다.
편향 값이 작을수록, 활성화 시에 필요로 하는 값(입력 신호에 가중치를 곱한 값들의 합)이 커져요.
● 개선
최근 저는 '정보처리기사' 자격증을 준비하고 있습니다.
+) 이것도 나름 포트폴리오 개선을 위한 노력이라 생각합니다.
개발자들 사이에서 해당 자격증을 주제로 갑론을박이 오갔다는 것 역시 알고 있습니다.
'정보처리기사' 자격증 취득이 불필요하다고 말하는 입장은 프로젝트 이력을 더 강조하고, 자격증이 필요하다고 주장하는 입장은 서류 전형에서의 베네핏과 IT 상식 습득에서 오는 장점을 더 강조하는 것으로 보였습니다.
두 입장 모두 일리가 있다고 생각해서 타협안을 선택했습니다.
'정보처리기사' 자격증은 단기로 준비하고, 프로젝트는 장기로 준비하기로 결정했습니다.
프로젝트는 캠프에서 진행하는 컨텐츠 말고도 개별적으로 추가 진행할 예정입니다.
일단 오늘은 간략하게 '정보처리기사' 자격증을 준비하면서 본 개념 몇 가지를 정리해보려 합니다.
헷갈렸던 개념들 위주로 뽑아 봤습니다.
# 트리의 운행법
- Preorder : Root(먼저) ➡️ Left ➡️ Right
- Inorder : Left ➡️ Root(중간) ➡️ Right
- Postorder : Left ➡️ Right ➡️ Root(나중)
# 선택 정렬(Selection Sort)
'선택 정렬'은 n개의 레코드 중에서 최솟값을 찾아 0번째 인덱스에 놓고, 나머지 (n-1)개 중에서 다시 최소값을 찾아 1번째 인덱스에 놓는 방식을 반복합니다.
이걸 (n-2) 인덱스에 놓을 때까지 하면 정렬이 어느 순간 완성됩니다.
# 버블 정렬(Bubble Sort)
'버블 정렬'은 인접한 두 값을 서로 비교하여, 크기에 따라 값을 교환하는 방식입니다.
이 과정을 정렬이 완성될 때까지 하면 됩니다.
# 퀵 정렬(Quick Sort)
'퀵 정렬'은 분할&정복(Divide&Conquer) 방식을 사용하여 자료를 정렬하는 방식입니다.
정렬 시에 피봇(pivot)이라 불리는 기준점을 잡는다는 특징이 있습니다.
배운 내용 정리하다 보니까 어느새 시간이 이렇게 되었네요...!
뭐 했다고 이렇게 시간이 빨리 흐르는 건지;;;
그래도 재밌었으니까 된 거죠 뭐...^^
아 얼른 자고 일어나서 또 독산역 가야지~~~!!
새로운 강사님께 배울 내용 생각하니까 너무 두근거린다~~~!!!
+) 부족한 부분이 있으면 댓글로 말씀해 주세요! 겸허한 마음으로 더 공부하겠습니다.
'활동 > SK네트웍스 Family AI 캠프 2기' 카테고리의 다른 글
SK네트웍스 Family AI 캠프 2기 : 11th week (7월 4주차) + 7월 회고 (0) | 2024.07.29 |
---|---|
SK네트웍스 Family AI 캠프 2기 : 10th week (7월 3주차) (4) | 2024.07.21 |
SK네트웍스 Family AI 캠프 2기 : 8th week (7월 1주차) (0) | 2024.07.08 |
SK네트웍스 Family AI 캠프 2기 : 7th week (6월 4주차) + 6월 회고 (2) | 2024.07.01 |
SK네트웍스 Family AI 캠프 2기 : 6th week (6월 3주차) (0) | 2024.06.24 |