목차

오늘의 TIL목차는

  1. 시작전 마음가짐
  2. LLM&RAG 강의
  3. 수준별 학습반
  4. 회고

입니다.

 

오늘의 강의 필기와 코드는 GITHUB링크를 참고해주세요.

 

TIL/ML at main · Onesword-Jang/TIL

오늘 배운 것은?! Contribute to Onesword-Jang/TIL development by creating an account on GitHub.

github.com

 

 

TIL/LLM/LLM_RAG_1.ipynb at main · Onesword-Jang/TIL

오늘 배운 것은?! Contribute to Onesword-Jang/TIL development by creating an account on GitHub.

github.com

 

 


시작전 마음가짐

오늘은 새로운 팀으로 이동하게 되는 날입니다.

 

다른분들에게 피해를 주지 않으려면 학습에 대한 열정가지고 열심히 해야겟습니다.

 

또한 오늘부터는 복습보단 새로운 강의를 듣는 것을 목표로 하며 수준별 학습반 강의 내용을 완벽히 이해하는것이 목표입니다.

 

그럼 학습을 시작하겟습니다.


LLM&RAG 강의

LLM & RAG 강의를 4주차까지 완강했습니다.

 

내일(토요일)을 사용해서 5주차 까지 완강예정입니다.

 

오늘 강의를 듣기 전에는 아직 앞선 강의들에 대한 이해도가 매우 맞다고 생각하고있어 벌써 다른 주제의 강의를 듣기에는 부담스럽다라고 생각했습니다.

 

하지만 막상 들어보니 강의 내용 자체는 지금까지 들어보았던 강의 중에서 가장 이해하기 쉬웠으며 실습 또한 매우 간단하여 재미있게 들었습니다.

 

아직 완강한게 아니라서 쉽다고 생각하는게 섣부를 수 있지만 재미있고 유익한 시간이였다고 생각합니다.

 

오늘 실습을 진행하며 만난 트러블은 System에 정보를 전달했음에도 Assistant의 답변에 적용이 되지 않았습니다.

 

이를 해결하기 위해 강의 내용을 생각하다가 이전 대화 내용을 기억하고 학습한다는 부분이 생각나 이전의 대화내용을 전부 삭제하고 실행하니 해결이 되었습니다.

 


수준별 학습반

1. 문자열 붙여서 출력하기

  • 문제없이 해결
str1, str2 = input().strip().split(' ')

if 1 <= len(str1) <= 10 and 1 <= len(str2) <= 10:
    print(str1, end="")
    print(str2)

다른 사람 정답

  • replace(): 특정 값을 다른 값으로 대체할 때 사용하는 함수
  • 문자열.replace(바꿀문자열, 새문자열, 바꿀_횟수)
print(input().strip().replace(' ', ''))

튜터님 풀이

result = "".join([str1, str2])
print(result)

2. 문자열 돌리기

  • 전혀 모르겟어서 검색을 통해 해결
str = input()
for char in str:
    print(char)

다른사람 정답

  • join메서드: 문자열을 결합할 때 사용하는 메서드
print('\n'.join(input()))

3. 홀 짝 구분하기

  • if문법이 헷갈렸지만 혼자 해냄
  • != 문법이 생각 나지않아 필기 찾아 봄
a = int(input())

a_1 = a % 2

if a_1 == 0:
    print(f"{a} is even")

elif a_1 != 0:
    print(f"{a} is odd")

다른사람 정답

  • 비트 연산자 &: 두 비트가 모두 1일 때만 결과가 1이 된다.
  • n&1을 이용해 n이 짝수인지 아닌지 검증 가능(짝수일때 0, 홀수일 때 1)
  • n & (1 << k)을 사용해 n의 k번째 비트가 1인지 확인가능
  • 이진법에 대한 공부 필요
  • 슬라이싱 기법: n&1 값을 시작 인덱스로 삼고, 그 이후에 2칸 간격으로 문자를 선택
n=int(input())
print(f"{n} is {'eovdedn'[n&1::2]}")

총평

  • 지금까지 배운 내용으로 충분히 해결 가능한 문제들도 틀림
  • 응용력이 많이 부족해보임

머신러닝 복습(t-SEN, LDA)

1. t-SEN 코드 중

tsne = TSNE(n_components=2, random_state=42)
  1. n_components=2는 TSNE 클래스의 매개변수로, 몇 차원으로 축소할 것인지 지정
sns.scatterplot(x=X_tsne[:, 0], y=X_tsne[:, 1], hue=y, palette='viridis', legend=None)
  1. legend=None은 데이터에 대한 범례가 그래프에 표시되지 않는다. (표시하려면 'full' 또는 'auto')
  2. 범례란? 데이터 그룹의 이름을 그래프에 표시하는 것을 의미
  3. [:, 0]은 첫 번째 열에 해당하는 모든 값을 선택

2. LDA 결과 해석

  • 우선 정리가 아직 끝나지 않았다.
  • 학습을 마무리하며 정리 내용을 확인 해본 결과 의도를 이해할 수 없고 내용이 뒤죽박죽이다.
  • 정확히 어떤걸 위해 사용하고 그 원리가 무엇인지 모르겟다.(어렴풋이는 알겟는데 다른 설명을 찾아보면 아니고...)
  • 내일 강의를 다 듣고 나서 다시 한번 도전 해볼 것이다.

회고

LLM&RAG 강의를 들으며

 

생각보다 접근하기 쉽고 이해하기 좋아서 빨리 끝낫고 Ai모델 활용을 통해 해보고 싶던 AI에게 인생상담 받아보기도 진행해서 아주 만족입니다.

 

그리고 강의 듣는 시간이 빨리 끝나 계획에 없던 머신러닝에 대한 복습도 진행했습니다.

 

머신러닝을 공부하며

 

t-SEN과 LDA의 코드는 이해가 완벽하게 끝났지만 결과 해석을 아직 이해하지 못했습니다. (아쉽..)

 

내일 마저 도전해보고 2개 중 1개는 이해하고싶습니다.

 

수준별 학습을 들으며

 

파이썬 기본 문법 등을 활용해서 문제풀이 강의였습니다.

 

과제롤 받아 혼자 풀어보고 다른 사람들의 풀이도 보며 굉장히 다양한 풀이 방법들이있구나 싶었는데 튜터님께서 보여주시는 방법도 또 다른 방법이여서 매우 놀랐습니다. (join함수와 %나머지 값을 활용하기)

 

자주 문제를 풀어보고 내 것으로 만들고 싶습니다.

 

감사합니다

☑️ 목차

오늘 TIL 순서는

  1. 시작전 마음가짐
  2. Python 과제
  3. 머신러닝
  4. 회고

입니다.

오늘은 따로 필기하거나 작성한 코드가 없습니다.


☑️ 시작전 마음가짐

오늘은 학습에 흐름이 끊기지 않고 한 주제에 매몰 되지않게 순서를 짜 보았습니다.

 

물론 진행하다가 트러블이나 궁금증이 생기면 다시 매몰 될 수 있지만 학습에 오히려 좋은 것 같습니다.

 

어제 하지못한 API키 활용은 꼭 해보고 싶습니다!

 

그럼 학습을 시작하겟습니다.


☑️ Python 과제

1. 대소문자 바꿔서 출력하기

  • 대 소 문자 변환 함수가 upper, lower가 생각나고 한번에 전체 문자열을 바꾸는 함수가 있었는데 라고 생각함
  • 생각나지 않아 검색해보고 swapcase함수를 찾음
  • NameError로 swapcase() 작성 문법 틀려서 메서드 형태로 적용하고 해결
    str = input()
    str_swap = str.swapcase()
    while True:
      if len(str) >= 1 and len(str) <= 20:
          print(str_swap)
          break
      else:
          print('20자 이내의 영어문자만 입력하세요.')
          str = input()
          str_swap = str.swapcase()
          continue

2. 특수 문자열 출력

  • 특수 문자를 그대로 출력하는 방법을 몰라서 검색을 통하여 해결
  • \ 문자열은 \뒤에\를 붙이는 방식으로 출력 가능하는걸 알게 되었습니다. 하지만 너무 복잡해져서 더 알아보고 r string 방법을 찾았습니다.

3. 덧셈 식 출력하기

  • 이 문제는 모르는 부분 없이 금방 완료!!
  • 조건식을 간단하게 하는 방법을 찾아봄 1 <= a <= 100 and 1 <= b <= 100:
    a, b = map(int, input().strip().split(' '))
    if a >= 1 and a <= 100 and b >= 1 and b <= 100:
      print(f'{a} + {b} = {a + b}')

☑️ AI모델활용

강의를 3주차 1강까지 들었습니다.

강의를 들으며

  • 새로운 가상환경을 만들었습니다.
  • numpy 버젼 호환 문제가 발생하여 호환 가능한 버젼으로 다운 그레이드 해주었습니다.
  • transformers와 torch의 호환 문제로 호환되는 버젼으로 다운 그레이드 해주었습니다.
  • 다운그레드 과젱어서 torch vision과 오디오버젼에 문제가 생겼지만 당장 사용하지 않는 라이브러리들이라 변경하지 않았습니다.
  • 3-1까지 설명한 오류는 제외하면 깔끔하게 진행했습니다.
  • API키를 활용하는 모델이 나오지 않아 슬랙 질문방에 공유해주신 코드를 실행해보고 문제 없음을 알게 되었습니다.
  • 내일은 남은 강의를 들으며 나오는 코드와 공유받은 코드의 내부를 내가 바꾸고 싶은대로 해보는게 목표입니다.

☑️ 회고

오늘은 밍글데이로 약간의 쉬어가는 날이였습니다.

 

오늘 밍글데이라는걸 잊어버리고 계획을 잡아 머신러닝 복습과 포트폴리오 도전을 진행하지 못했습니다.ㅜㅜ

 

또한 새로운 챕터 발제가 있었고 내일부터 또 다른 강의를 수강해야할 것으로 보입니다.

 

아직 머신러닝도 복습 마무리 못했는데...

 

우선 강의를 1회 반복을 빠르게 진행하고 다른 복습을 진행하는게 진도 맞추기에 좋을것 같아 원래 한 주 계획이였던 포트폴리오와 머신러닝 복습은 미루어야겟습니다.

 

그리고 수준별 학습 강의를 진행했는데 처음 나오는 과제라서 문제없이 쉽게 풀었지만 튜터님께서 내가 생각한 한가지 방법말고도 여러 방법, 함수 등을 보여 주셨습니다.

 

하루를 마무리할 때 목표는 그 날 수준별 학습 강의 내용을 내 것으로 만들고 마무리하는 것으로 진행 예정입니다.

 

감사합니다.

+ Recent posts