오늘의 이모저모
새로운 한주의 하루가 지났다.
강의에서 할게 없어서 그런건지
점점 뭔가 지루해져가고 있다.
새로운 자극이 필요해!
좀더 집중하고 좀더 활발하게 하는 내일이 되었으면 한다.
오늘의 목표
- 4주차 까지 진도 빼기
- 4주차까지 정리하기
- SQL코드카타
- 알고리즘 코드카타
달성도
놀랍게도 오늘은 모든 목표를 끝냈다.
사실 4주차까지의 내용이 크게 정리할 부분이 없는것도 한몫했다.
내일은 다 끝내고 추가 공부나 이전 공부 복습하는 시간을 가져보는것이 좋을거 같다.
사실 오늘좀 피곤하지 않았으면 다 끝냈을텐데...
오늘 공부한 것
SQL
문제
Find Customer Referee - LeetCode
Find the names of the customer that are not referred by the customer with id = 2.
Return the result table in any order.
The result format is in the following example.
Example 1:
Input:
Customer table:
+----+------+------------+
| id | name | referee_id |
+----+------+------------+
| 1 | Will | null |
| 2 | Jane | null |
| 3 | Alex | 2 |
| 4 | Bill | null |
| 5 | Zack | 1 |
| 6 | Mark | 2 |
+----+------+------------+
Output:
+------+
| name |
+------+
| Will |
| Jane |
| Bill |
| Zack |
+------+
해설
- name 필터
- referrr_id 의 값이 2가 아닐때
코드
SELECT name
FROM Customer
WHERE referee_id is null or referee_id not in ('2')
링크
LeetCode/0584-find-customer-referee at main · K-MarkLee/LeetCode
LeetCode/0584-find-customer-referee at main · K-MarkLee/LeetCode
Collection of LeetCode questions to ace the coding interview! - Created using [LeetHub](https://github.com/QasimWani/LeetHub) - K-MarkLee/LeetCode
github.com
끝
알고리즘
문제
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여
F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.
예를들어
F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5
와 같이 이어집니다.
2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수,
solution을 완성해 주세요.
풀이
피보나치의 경우 위와 같이 F(5)가 입력값으로 들어간다면,
F(4)와 비교했을때, 두번째 숫자가 첫번째 숫자가 되고, 토탈 숫자가 두번째로 들어가는것을 알 수 있다.
즉 5의 입력값이 들어간다면 4의 입력값을 위한 2번째수와 4 그 자체가 들어간다.
이를 1234567로 나눈다.
코드
first, second, last의 값을 넣는다. last의 값은 사실 중요하지 않다.
어짜피 first와 second의 합이다 보니 123을 넣어도 상관없다.
def solution(n):
first, second, last = 0, 1, 2
for i in range (n-1):
last = first + second
first = second
second = last
return last % 1234567
링크
Programmers/프로그래머스/2/12945. 피보나치 수 at main · K-MarkLee/Programmers
Programmers/프로그래머스/2/12945. 피보나치 수 at main · K-MarkLee/Programmers
This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Programmers
github.com
Shot 프롬프팅
Shot 계열의 프롬프팅 기법에 대해서 알아보자
Zero-Shot 프롬프팅
Zero-Shot 프롬프팅이란, 인공지능에게 아무런 예시를 주지않고 원하는바만 전달하는 방식이다.
즉 일반적인 답변을 위한답변을 받기 위해 사용하는 방식인데,
만약 인공지능에게 추상적인 질문을 한다면, 원하는 답변을 받지 못하는 경우가 많다.
GPT에게
너는 1~10까지 그에 해당하는 농담을 이야기 해줘야해
라고 질문한다면,
Zero-Shot 프롬프팅의 경우의 답변이다.
1: 한 친구가 다른 친구에게 말했습니다. "너는 정말 유일무이해!"
2: 두 마리의 새가 나무에 앉아 있었어요. 한 마리가 다른 마리에게 말했어요. "우리 둘이 함께하니 참 좋다!"
3: 세 친구가 모여서 사진을 찍었어요. 한 친구가 말했어요. "우리 셋이니까 삼각관계네!"
4: 네 마리의 개구리가 연못에 앉아 있었어요. 한 마리가 말했어요. "우리 네 마리니까 사중주를 부를 수 있겠어!"
5: 다섯 손가락이 모여서 파티를 열었어요. 엄지손가락이 말했어요. "우리는 완벽한 팀이야!"
6: 여섯 명의 친구가 함께 여행을 갔어요. 한 친구가 말했어요. "우리는 육각형처럼 단단해!"
7: 일곱 난쟁이가 백설공주에게 말했어요. "우리는 행운의 숫자 7이야!"
8: 여덟 문어가 모여서 춤을 췄어요. 한 문어가 말했어요. "우리는 팔방미인이야!"
9: 아홉 고양이가 모여서 회의를 했어요. 한 고양이가 말했어요. "우리는 구사일생의 고양이들이야!"
10: 열 명의 학생이 시험을 봤어요. 선생님이 말했어요. "모두 만점이야! 완벽해!"
One-Shot 프롬프팅
Zero-Shot 프롬프팅과는 다르게 예제를 추가해 주는 것이다.
이름 그대로 One-Shot 즉 예제를 하나만 제공하는 것을 의미한다.
GPT에게
너는 1~10까지 그에 해당하는 농담을 이야기 해줘야해.
예시를 보여줄게 1 : 한놈
라고 질문한다면,
One-Shot 프롬프팅의 경우 답변이다.
1 : 한놈
2 : 두리번거리는 놈
3 : 세상물정 모르는 놈
4 : 사차원인 놈
5 : 오지랖 넓은 놈
6 : 육감이 좋은 놈
7 : 칠칠맞지 못한 놈
8 : 팔랑거리는 놈
9 : 구질구질한 놈
10 : 완벽한 놈
Few-Shot 프롬프팅
Few-Shot프롬프팅은 예제를 충분히 여러개를 줘서,
모델이 학습을 잘 하도록 유도하는 것이다.
GPT에게
너는 1~10까지 그에 해당하는 농담을 이야기 해줘야해.
예시를 보여줄게 1 : 한놈 2 : 두시기 3 : 석삼 4 : 너구리 5 : 오징어
이렇게 질문한다면,
GPT의 답변이다.
1 : 한놈
2 : 두시기
3 : 석삼
4 : 너구리
5 : 오징어
6 : 육개장
7 : 칠면조
8 : 팔뚝
9 : 구렁이
10 : 십장생
추가
이 외에도 예제와 함께 그 과정또한 추가한다면 모델의 추론 능력이 향상이 될 것이다.
결국 이 shot프롬프팅 기법이란, 내가 원하는 결과를 얻기 위해서
충분한 예제로 개인화를 시키는 방법을 뜻한다.
Act As 프롬프팅
Act As 류의 프롬프팅 기법에 대해서 알아보자
Act As 기법
Act As는 역활을 부여하는 프롬프트를 의미한다.
즉 모델에게 어떠한 특정 직업이나 역활을 부여하여 그 직업이나 역활에 맞게 답변을 하도록 유도하는 것이다.
전문적인 정보를 알고싶을때와 가벼운 유머또는 럭셔리 여행계획등
다양한 답변이 나올 수 있는 상황에서, 역활을 부여하여 최대한 원하는 답얻기 위해서 사용한다.
페르소나
페르소나는 간단히 직업을 설정하는 것 부터
새로운 가상의 인물을 지정하고 성격과 직업등을 설정하여 그 가상의 인물의 관점에서 답변하도록 할 수 있다.
인물 뿐만이 아닌, 사물을 페르소나로 적용할수 있으며,
예시로 파이썬 인터프리터 처럼 사용할 수도 있다.
이들의 예시로, 최근에 생기고있는 다양한 캐릭터들과의 대화같은 방식은
전부 ai에 그 캐릭터의 페르소나를 잘 입혀서 유저에게 실제로 그 캐릭터와 이야기하는것 처럼
느끼게 하는 경험을 제공해 주는 것이다.
논리적 추론 강화
LLM의 논리적 추론을 강화시키는법에 대해서 알아보자
논리적 추론의 한계
LLM은 확률적으로 답변을 제공하기 때문에,
수학적인 문제 또는 논리적인 퍼즐과 같은 문제에서 잘못된 답변을 생성할 때가 있다.
예를들어서 어떠한 질문을 하는데 있어서, 기초적인 이해가 필요한 부분이라면,
이를 명시하지 않았을때, 인공지능은 이를 추론하지 못하고 답변을 생성할 것이다.
CoT 기법
CoT기법이란 단계별로 추론 과정을 설명하도록 모델을 유도하는 기법이다.
중간단계의 추론을 명시하여, 좀더 복잡한 문제에 대해서 정확히 풀 수 있게 한다.
즉 중간 추론 단계를 넣음으로써 답을 생성하는 과정에서 논리적인 흐름을 따라가게 하는 것이다.
즉 기본적으로 기초적인 이해를 하지 못하는 부분이 생긴다면,
그 문제를 풀기위해서 기본적인 정보를 주는것이, 중간 단계의 과정을 설명하는것이
정확한 답변을 얻기 쉽게 한다.
또한, 인공지능에게 중간단계를 설명하라는 프롬프트를 사용함으로써
인공지능이 중간단계를 설명하는 와중에 오류가 있다면 수정 할 것이다.
링크
https://github.com/K-MarkLee?tab=repositories
K-MarkLee - Overview
K-MarkLee has 21 repositories available. Follow their code on GitHub.
github.com
'TIL and WIL > TIL' 카테고리의 다른 글
2024년 11월 13일 TIL (4) | 2024.11.13 |
---|---|
2024년 11월 12일 TIL (2) | 2024.11.12 |
2024년 11월 10일 TIL (2) | 2024.11.10 |
2024년 11월 09일 TIL (1) | 2024.11.09 |
2024년 11월 08일 TIL (1) | 2024.11.08 |