일지/네부캠 AI 4기(22.09.19~23.02.14)

20221022

제로타이 2022. 10. 23. 00:58

주말

학습일지는 주일에만 올려야 한다고 지레 생각했는데, 사실 굳이 그럴 필요는 없다고 생각한다. 스케줄 정리를 위해서는 오히려 주말에도 학습일지를 올려서 깔끔하게 정하는 게 좋다고 생각해서 작성한다. 

마스터클래스

예비군 때문에 듣지 못 했던 강의. 추천시스템 강의를 찍은 이준원 마스터의 마스터클래스.
ML 커리어를 어떻게 만들어나가는 것이 좋을까?

중요한 것은 개발 능력, 지식과 이해도, 커뮤니케이션. 이것들의 본질은 결국 문제 해결력이다. 직면한 문제를 얼마나 잘 헤처나갈 수 있는지. 내가 쓸 수 있는 모든 수단을 동원해서 풀어내면 된다. 그 수단으로서 위의 것들을 들 수 있다.
주니어 때는 하나의 도메인에서 깊게 깊이를 쌓는 것이 좋다. 위의 것들을 잘 배울 수 있는 기회다. 
스터디, 컨퍼런스, 이직, 사이드 프로젝트 등은 다양한 선택지와 기회를 제공한다. 아무것도 하지 않으면 아무 일도 일어나지 않는다.
점차 이런 커리어를 쌓으며 자기만의 기준을 만들어나가면 된다. 
자신의 위치에서 할 수 있는 액션을 취하는 것. 다양한 경험을 하는 사람이 대체로 능력 있는 사람이다.

추천시스템의 미래. 모든 것을 개인화할 수는 없어서 생각보다 분야가 넓게 퍼지지는 않다. 갈수록 어둡다는 아니지만, 더 넓어지지도 않을 수도 있다. 계속 현상 유지를 할 가능성이 높다.
이 분야는 입사하지 못하면 경험하지 못하는 것이 너무 많다. 현업에 빠르게 들어가는 것이 도움이 될 것이다. 
추천시스템은 엔지니어링 영역이 중요하다. 모델링보다 개발 역량이 더 요구된다.
추천시스템에서 특히 가지고 있어야 하는 역량은 서비스 관련한 지식. 추천시스템은 어차피 모델이 단순한데, 어떤 피처를 쓰는지를 알아야 한다. 그래서 결국 generalist의 상태가 되는 게 좋다. 물론 취업하고 나서야 알 게 될 만한 것이고 취업 준비에서 그렇게 할 필요는 없을 수도.
딥러닝과 머신러닝의 성능이 비슷한 상황에서는 굳이 무거운 딥러닝을 쓸 메리트가 없다. 

GRU4rec

보통이면 따로 글을 정리했겠지만 스터디를 위한 글이라 여기에다 간략하게.

일단 gru4rec을 보고 gru를 손코딩해서 구현해본다. lstm을 참조하면 될듯.  이후 파이토치로 따라할 수 있는 방법을 알아본다. 이전에 mnist를 lstm으로 하는 것도 있었으니 참고하면 될지도. 마지막으로는 gru4rec을 직접 구현해볼 건데, 되면 좋고 안 되면 어쩔 수 없음.

일단 첫번째로 gru 손코딩. 실패. 수식만 바꿔주고 적용하면 무리없이 작동할 것이라 생각했는데 생각과는 다르게 무언가 문제가 있었다. 정확하게 어떻게 해결해야 할 지는 모르겠는데, 일단 문제는 내적을 하면서 발생한다. 내적을 할 차원이 맞지를 않는다. 그렇다고 브로드캐스팅이 일어날 수 있게 되어있는 것도 아니고. 이것을 해결하면 될 것 같은데, 방법을 잘 모르겠다. 그리고 예제 코드로 주어진  GRU는 파라미터를 따로 등록하지 않는데 다른 모델들처럼 사용하기 위해서는 파라미터를 사용해야 한다. 그래서 그런 부분도 바꿔주었지만.. 일단 처음 연산부터 굴러가지를 않아서 내가 잘 했는지 확인할 수도 없는 상태.

시간을 갈아넣어서 어떻게든 굴러가게끔 해놨더니 나오는 상황. 지금 내가 뭔가를 단단히 잘못 만든 모양인데, 감이 잘 오지 않는다. 왜인지 분모의 값이 계속 작아지는 상황이 나오고 있는 듯하다.

다시 찍어보니까 분모는 작아질 일이 없고, 분자가 커지는 게 문제인 상황이다. 분자는 그냥 total_loss로서 학습이 제대로 진행된다면 조금씩 분자가 작아져야만 한다.
이 이상은 당장의 내 실력으로 해내기에는 시간이 너무 걸릴 것 같아서 일단 포기. 지금도 이미 하루 종일 시간을 쏟았는데 더 하면 어떻게든 결과는 낼 것 같지만 비효율적일 것이라는 생각이 든다.

다음으로 해볼 것은 파이토치로 GRU구현해보기. 이 부분은 생각보다 처음부터 난관인 것이, 데이터를 어떻게 다뤄야 할 지 모르겠다. 내가 계속 우려했던 것인데, 역시 아무것도 없는 상태에서 나 혼자 모든 것을 만들어보려고 하니 감도 잡히지 않는다. 부캠에서 내주는 과제는 여태 빈칸 채우기가 다였으니까.. 당장 다음 주부터 프로젝트가 시작이기에 지금부터 이런 고통을 받으면서 익숙해질 필요가 있다.

다른 사람이 올려둔 코드를 그대로 베껴서 해봤다고 생각했는데.. 왜 이러는 걸까요? 다시.
이전에 나왔던 과제 중에 MNIST를 LSTM으로 학습하는 과제가 있었다. 그렇다면 나는 Fashion-MNIST를 GRU로 학습해볼 수 있지 않을까?
라고 생각해서 일일히 베껴쳐가면서 구현에 성공!

파라미터 수가 60만개.. 학습에 시간이 매우 많이 걸린다. 10회 학습을 진행했고 정확도는 91퍼까지 올라갔다. 더 오래 돌리면 더 정확도는 오를 것으로 생각된다. 
데이터 자체가 연속성이 있지 않아 유의미한 학습을 하고 있지는 않은 것으로 보인다.

마지막으로 계획했던 GRU4rec 구현은.. 시간이 너무 늦어 포기.

회고

이야. 생각보다 직접 데이터를 다루는 일은 너무나도 어려웠다. 결국에는 기존에 있던 과제의 코드를 보면서 베끼는 정도가 전부였는데, 이것도 빨리 익숙해지지 않으면 안 될 듯하다. 데이터를 다룰 대에 막막한 기분은 내가 처음 ai 분야의 강의를 들었을 때의 기분과 비슷한 것 같다. 막상 해보면 할 수 있는 영역인데 아직 너무도 낯설 뿐이다. 다음 주의 프로젝트 기간에 확실하게 감을 잡아두고 싶다. 이를 위해 미리 연습하는 시간은 충분히 의미 있다.

'일지 > 네부캠 AI 4기(22.09.19~23.02.14)' 카테고리의 다른 글

20221024  (2) 2022.10.24
20221023  (0) 2022.10.23
20221021  (2) 2022.10.21
20221019  (2) 2022.10.19
20221018  (2) 2022.10.18