항해 플러스 AI 후기 1주차 WIL

1. 이번 주 목표

여유 에너지가 없으면 아무것도 하지 않는 나에게 있어 이번 코스에 합류하기로 한 결정은 꽤 큰 의미를 가지고 있다. 인공지능 시대의 흐름이 내게 꽤 크게 와닿았다는 방증이다.

당장 이 코스를 제외하고도 개인 일정이 굉장히 타이트한 상황이었기 때문에 거창하게 주 단위의 목표를 정해놓고 시작하지 않았다. 그저 쓸 수 있는 시간을 최대한 활용하겠다는 다짐뿐…

2. 코스 개요

첫 주차의 기록이기 때문에 앞으로의 과정을 조금 살펴보자.


  • 사전 준비 과정

    • 나는 사전 준비 기간이 거의 다 지나갔을 때 쯔음에 합류 결정이 되었다. 솔직히 말하면 아 저런것들을 했구나. 미리 들었다면 이런 부분엔 유리했겠지만 필수는 아니였겠다. 하는 정도의 생각이 들었던 것 같다.

  • 머신러닝과 딥러닝

    • Linear regression, Multi-layer Perceptron, classification model, cnn 등으로 이루어져 있고 1주차에는 Linear regressionMulti-layer Perceptron까지 학습했다.

    • 솔직히 아직까지도 많이 와닿지 않는다. 엔지니어링 자체보다는 활용에 집중하는데, 아직까진 어떻게 활용하면 좋을지 감이 안잡혀서 그런 것 같다.

  • 자연어 처리

    • Recurrent Neural Network, Sequence-to-Sequence, Transformer, BERT, GPT … 등으로 이루어져 있다.

    • 최근 회사 업무로 인해 개인적으로 자연어 처리에 도전중이라 이 챕터를 제일 기대하고 있다. 이전 챕터와의 차이라면 대충 어떤어떤 식(RAG - NLP - LLM 으로 이뤄지는 파이프라인)으로 활용하면 좋을지를 구상하고 챕터를 확인해서 그런게 아닌가 싶기도 하다.

  • LLM

    • HuggingFace, Zero-shot Classification, ClosedLLM: ChatGPT, OpenLLM: LLaMA, Gemma 등으로 이루어져 있다.

    • HuggingFace는 NLP 쪽을 찾아보며 몇번 접한적이 있으나 무슨말인지 제대로 못알아 들었다. ChatGPT 같은건 뭐 말하면 입 아픈 정도가 아닐까?

  • LLM Fine tuning

    • 이 부분은 뭐랄까… 비즈니스적인 기대감을 많이 가지고 있다. 시간이 된다면 키워드를 기반으로 사전 지식을 좀 넣어보면 좋을 것 같다.

3. 학습 내용

1주차의 내용은 딥러닝 이론과 자연어 처리 (1) 이다.

오피셜한 강의 자료 상에서의 목표는 다음과 같다.

  1. 머신러닝과 Linear regression(선형 회귀): 먼저 머신러닝의 정의나 수학적인 표현에 대해 다룹니다. 그리고 손글씨에서 숫자를 맞추는 것보다 더 간단한 문제에서 머신러닝의 가장 기본적인 방법론 중 하나인 linear regression에 대하여 다룹니다. Linear regression을 실습하며 머신러닝의 기본적인 틀과 수학적인 표현에 익숙해지는 시간을 가집니다.

  2. Multi-layer perceptron(MLP, 다층 퍼셉트론)와 손글씨 숫자 예측 모델 구현: 본격적으로 손글씨 사진을 보고 숫자를 예측하는 AI를 구현합니다. 먼저 linear regression에서 사용한 모델을 MLP라는 더 강력한 모델로 확장합니다. 그리고 확장한 MLP를 가지고 손글씨 사진을 보고 숫자를 예측하는 AI를 구현합니다.

  3. 딥러닝 techniques: 마지막으로 2에서 구현한 AI의 성능을 더 향상시켜 줄 수 있는 weight decay, dropout, layer normalization, Adam optimizer와 같은 기술들에 대해 다룰 것입니다.

  • Linear regression

    • 내가 결론적으로 이해한 것은 무수히 많은 node가 분포되어 있고, 그 사이를 지나는 최적화 된 선을 찾는 과정이라고 느껴졌다.

    • 수 많은 선이 존재할 수 있지만, 결과적으로는 수학적 모델링이기 때문에 그 중 가장 선형성을 잘 나타내는 선을 찾는 과정 정도?

  • Multi-layer Perceptron(MLP)

    • 선형 회귀 모델을 여러 개 쌓고 비선형성을 처리할 수 있게(ReLU) 만들었음.

    • 여러개를 쌓음으로써 복잡한 형태의 데이터를 처리할 수 있게 함.

    • Computation graph

      • MSE를 Computation graph로 표현하는 과정에서 이해가 잘 되었음. 이 이후에 펼쳐지는 것은…

    • Back Propagation

      • Computation graph를 기준으로 각 노드 별 연산을 미분해서 곱한다… 정도인 것 같은데… 수학적으로는 오케이인데, 의미적으로는 솔직히 잘 안 와닿았음.

  • Deep Learning

    • 특정 데이터 셋을 너무 많이 학습(Over fitting, 과적합)하게 되면 일반적인 data에 대한 출력에 대한 기능을 상실함. 딥러닝의 의미는 일반화(Normalization)에 있는데, 과적합은 일반화가 파괴된 결과물임. 따라서 OverFitting을 줄여줄 수 있는 기법 중 몇가지를 배웠다.

    • DropOut

      • 제일 개념이 쉽다. 너무 많이 학습할 것 같으니, 무작위로 중간에 노드 하나씩을 폐기해버리는 것. 되게 재미있었다. 아이러니하지 않은가? 중간에 삽입한 무작위성이 무작위한 입력에 대한 출력을 보장해준다니.

    • 그 외 GeLu, Layer Normalization, Adam Optimizer 등을 배웠는데, 잘 모르겠다. 아마도 백그라운드가 부족해서 그런게 아닌가 싶다.

3. 문제 및 해결 과정

  • 기본 과제: MNIST 모델 구현하기

    • 기본적으로 과제를 소화할 수 있는 정도의 베이스 코드를 받았다.

    • CrossEntropyLoss 적용하고 학습 조건 변경하기.

    • 정확도 측정 함수와 plot 함수는 다음과 같다.

      def accuracy(model, dataloader):
      cnt = 0
      acc = 0
      
      for data in dataloader:
          inputs, labels = data
          inputs, labels = inputs.to('cuda'), labels.to('cuda')
      
          preds = model(inputs)
          preds = torch.argmax(preds, dim=-1)
      
          cnt += labels.shape[0]
          acc += (labels == preds).sum().item()
      
      return acc / cnt
      
      def plot_acc(train_accs, test_accs, label1='train', label2='test'):
          x = np.arange(len(train_accs))
      
          plt.plot(x, train_accs, label=label1)
          plt.plot(x, test_accs, label=label2)
          plt.legend()
          plt.show()
      
  • 심화과제: MNIST 예측 모델에 deep learning techniques

    • 개인 일정으로 소화할 수 없었다.

    • 언젠간 복습 차원으로 해봐야 할 듯.

4. 느낀 점 및 개선 방향

  1. 배경지식이 부족하다.

    • 꽤 많은 시간을 할애해야 할 것 같은데, 어떻게 소화가 가능할지 아직 잘 모르겠다. 균형을 잘 잡아야 할 것 같다.

  2. 생각보다 재미있다.

    • 기본적으로 수학을 좋아해서 무슨 말을 하는지 알아듣기 어렵지 않다.

    • 다만, 그 수학적 모델의 의의가 잘 공감되지 않는다.

    • 이건 배경지식 문제랑 굉장히 밀접하다는 생각이 들기 때문에, 더 많은 시간을 쏟으면 해결이 가능할 것으로 보인다.

5. 코스에 대해서

  • 1주차긴 하지만 대체로 설명이 납득할 만큼 친절했고 재미있었다.

  • 진행적인 측면에서 아쉬움이 좀 많았다. 배경지식의 그라운드를 좀 맞추려는 시도를 했으면 좋았을 것 같다.

    • 우선 참여하는 모두의 합류시기가 다르다. 즉, 합류 시기가 다르기 때문에 사전학습기간에 노출되는 기간이 다르다는 것을 의미한다.

    • 그 것을 온전히 학습자에게 부담한다면 당연히 학습자의 만족도가 떨어지지 않을까?

    • 모집기간과 시작기간을 엄격하게 구분했을 때 비즈니스적 문제가 있다는 것은 공감하나, 학습하는 입장에서는 그 부분에 공감하기 힘들다.


#항해99 #항해플러스AI후기 #AI개발자 #LLM

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2025년 3월 30일 오후 2:00

댓글 0

    함께 읽은 게시물

    차세대 파이썬 패키지 매니저 uv 소개 영상

    h

    ... 더 보기

    ChatGPT 버전명 설명

    ChatGPT 사용할 때 어떤 모델을 선택해야할지 망설여집니다. 모델명만 봐서는 어떤게 좋은지 모르겠더라고요.

    ... 더 보기

    타입 안전한 API 모킹으로 프론트엔드 생산성 높이기

    이번에 우아한형제들 기술 블로그에 "타입 안전한 API 모킹으로 프론트엔드 생산성 높이기"라는 새 글을 발행하게 되었습니다.

    ... 더 보기

    개발자의 장애 공유 문화

    ... 더 보기

    개발자의 장애 공유 문화

    K리그 프로그래머

    개발자의 장애 공유 문화

     • 

    저장 17 • 조회 3,720


    Testing Library 비동기 테스트

    ... 더 보기

     • 

    저장 10 • 조회 3,313


    주니어 개발자들이 읽으면 좋은 테크 아티클 모음📚

    F-Lab 에서 주니어 개발자들이(사실 개발자라면 누구나) 보시면 좋을 아티클 모음을 공유해 주었네요! 검색엔진부터 비동기 처리, NoSQL 등 다양한 분야의 아티클들이 공유되어 있으니 관심있으신 분들은 보시면 좋겠습니다. F-Lab 에서 공유해주신 아티클 주제를 나열해보면 다음과 같습니다. 📌 구글이 직접 말하는 검색엔진의 원리 (tali.kr) 📌 검색 엔진은 어떻게 작동하는가 (xo.dev) 📌 네이버의 검색엔진의 특징과 알고리즘 (tistory.com) 📌 [네이버 블로그]네이버 검색의 원리 : 네이버 블... 더 보기

    주니어 개발자들이 읽으면 좋은 테크 아티클 모음

    F-Lab : 상위 1% 개발자들의 멘토링

    주니어 개발자들이 읽으면 좋은 테크 아티클 모음

     • 

    저장 135 • 조회 3,628