전체 글 72

[NLP] LLM이란?

최근 몇년동안 뜨겁게 불타오르는 주제인 거대언어모델인 LLM에 대해서 알아보고자한다. 우선 LLM이란 무엇인지부터 알아보자!! LLM이란? : Large Language Model로, 다양한 NLP 처리 작업을 수행할 수 있는 대규모 언어 모델이다. 트랜스포머 모델을 사용하며 방대한 데이터 세트를 사용하여 훈련되었다. BERT계열, GPT계열 등 다양한 모델이 있다. 언어 모델의 유형 SLM(Small Language Model) : 제한된 양의 텍스트 데이터를 학습하여 국소적인 문맥 이해하는데 초점. 작은 규모지만 가볍고 실행속도가 빠른 특징 NLM(Neural Language Model) : 기존 통계 기반 언어 모델보다 더 정확한 성능. 주로 단어 임베딩, 문장 완성, 기계 번역 등 NLP작업에 사..

ML/NLP 2024.01.05

[Colab] matplotlib 한글폰트 깨짐 현상 해결 mac

어휴나눔 폰트를 설치해줘도 자꾸 인식을 못하길래 구글링으로 이것저것 찾아보는데 font_manager 버전이 업그레이드 돼서 무용지물이 되었다는 글을 보았다.. 그래서 찾은 해결방법import matplotlib.pyplot as pltfrom matplotlib import rc rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False  윈도우에서는 나눔고딕을 추가해주던데, Apple에는 'AppleGothic'을 추가해줘야한다 ㅋㅋ아무튼 위 코드를 실행하면 한글이 안 깨지고 잘 나온다!개인적으로 재부팅 필요없게 돼서 업데이트 된게 더 편한듯ㅎㅎ [참고]https://stackoverflow.com/questions/..

ML 2023.12.19

[Git] Git의 스테이징 영역과 상태(add, commit, push)

이번 포스팅에서는 매번 헷갈리는 Git의 스테이징과 상태에 대해 정리해보고자 한다. 깃의 상태는 관점에 따라서 2가지로 나눌 수 있는데, 한개는 파일을 관리하는 관점으로 봤을 때의 3가지 상태이고, 나머지 한개는 깃의 LifeCycle 관점으로 봤을 때의 4가지 상태이다. 📌 Git의 3가지 영역 Working Directory : Git이 관리하는 파일들이 위치하는 영역 지정 디렉토리에서 .git 디렉토리를 제외한 모든것(파일, 하위 디렉토리) 작업한 파일(생성 및 수정)들이 저장되는 곳 Staging Area : Commit할 준비가 된 파일들이 위치하는 영역 .git 디렉토리에 단순한 파일로 존재 작업한 파일들 중 버전으로 만들고자(commit)하는 파일을 저장 git 기술용어로 "Index"라고 ..

CS/Git 2023.12.08

[Algorithm] 위상정렬(Topology Sort)

백준을 풀다가 위상정렬 문제가 나와서 간단하게 정리를 해봤다. 📌 위상정렬(Topology Sort)이란? '순서가 정해져 있는 작업'을 차례로 수행해야 할 때, 그 순서를 결정해주기 위한 알고리즘. ✅ 작업의 순서가 정해져 있을 때, 작업을 정확하게 정렬해주는 알고리즘이다. ✅ 경로에 따라 여러개의 답이 존재할 수 있다. ✅ 사이클이 없는 방향그래프인 DAG(Directed Acyclic Graph)에만 적용이 가능하다. 🔆 결과값으로 1️⃣ 현재 그래프가 위상정렬이 가능한지, 2️⃣ 정렬이 가능하다면 그 결과는 무엇인지를 알 수 있다. ✔️ 위상정렬 구현 방법 위상정렬을 구현하는 방법으로는 두가지가 있는데, 1. Stack으로 구현 2. Queue로 구현 대부분 큐로 구현하는 것 같아, 여기서는 큐로..

Algorithm 2023.12.01

[Algorithm] 최단경로 알고리즘 모음 (다익스트라, 벨만-포드, 플로이드-워셜)

🚦 이번 포스팅에서는 〰️ ▶️ 최단 경로 알고리즘? ▶️ 주요 알고리즘(다익스트라, 벨만-포드, 플로이드-워셜) ▶️ 다익스트라 알고리즘 ▶️ 벨만-포드 알고리즘 ▶️ 플로이드-워셜 알고리즘 이번에는 최단 경로 알고리즘을 싹다 정리해보기로 했다!! 마침, 너무 정리가 잘 된 블로그를 찾게되어서 블로그 글을 요약해보며 공부하기로 했다. 블로그 = https://roytravel.tistory.com/340 감사합니다. 📌 최단 경로 알고리즘? : 최단 경로 문제는 가중 그래프에서 간선의 가중치의 합이 최소가 되는 경로를 찾는 문제이다. 〰️ 최단 경로 계산 방식 One-To-One : 한 지점에서 다른 특정 지점까지의 최단경로 One-To-All : 한 지점에서 다른 모든 지점까지의 최단경로 All-To..

Algorithm 2023.11.30

[C++] 9251. LCS

대표적인 dp문제이다. 하지만, 나는.. 바보같이 처음에 map써봤다가 당차게 틀려먹었다.. (대체 왜이러니..) map쓰면 문자열을 계속 순회해야해서 시간복잡도에서 걸린다. 그리고 이건 대표적인 dp라서 그냥 내가 바보였던것으로.. 넘어갑시다. 아무튼, dp를 이용해서 각 부분 문자열에 대한 LCS 값을 구해나가면 된다! 여기서 dp의 경우의 수는 두가지인데, i번째 문자열 == j번째 문자열 이건 왼쪽 위 대각선 값에 +1 해주면된다. 왼쪽 위 대각선 값이 이전 문자열인 (i-1,j-1)의 LCS 값이기 때문! i번째 문자열 != j번째 문자열 이건 왼쪽과 위 중 max값을 가져가면 된다. #include #include using namespace std; int main(void) { ios::s..

[C++] 15787. 기차가 어둠을 헤치고 은하수를

와.. 이름만 보고 풀기로 마음먹었는데 예상외로 비트연산을 이용해야하는 문제라 애 좀 먹었다.. (다 까먹어서.. 멍충) 그냥 배열로 순회하면서 구현했을때는 시간초과가 나서, 기억 저편에 있던 비트연산을 다시 공부하며 풀었다. (참고) - https://velog.io/@surpiz/C15787%EB%B2%88-%EA%B8%B0%EC%B0%A8%EA%B0%80-%EC%96%B4%EB%91%A0%EC%9D%84-%ED%97%A4%EC%B9%98%EA%B3%A0 챗지피티한테 이것저것 물어보면서 이해했는데 이 똥멍청이가 자꾸 자기가 한말을 번복해서 이해하는데 엄청 오래 걸렸다.. (사실 내가 똥멍청이) 아무튼.. 코드를 작성하며 이해가 잘 안간 비트 연산들을 필기해놓은 것들을 같이 첨부한다. 부디 나처럼 헤매..

[C++] 1991. 트리 순회

트리와 3가지 순회를 구현해보는 문제이다. 사실 처음엔 vector를 이용해서 구현해보려고 했는데, (멍청) 생각해보니 노드를 찾으려면 모든 vector를 순회해야 하므로 복잡도가 엄청 들게 생겼다.. 그래서, unordered_map을 이용하기로 했다. hash특성상 키에 접근하는 시간이 O(1) 상수시간이므로 빠르게 접근이 가능하다. 다만, 정렬은 필요없으므로 unordered를 사용했다. #include #include #include using namespace std; unordered_map tree; //root-left-right void preOrder(const string& node) { //node가 .이면 자식이 없으므로 return if(node == ".") return; c..

[C++] 14940. 쉬운 최단거리

전형적인 bfs 문제로, 목표지점을 기준으로 각 좌표들의 최단거리를 구해주면 된다. queue를 이용해 각 좌표들의 visited 처리와 함께 거리를 구해주었다. #include #include using namespace std; int n, m, r, c; int graph[1001][1001] = {0,}; int visited[1001][1001] = {0,}; //각 좌표의 상,하,좌,우를 탐색해준다. int dir_n[4] = {-1,1,0,0}; int dir_m[4] = {0,0,-1,1}; //목표좌표를 기준으로 시작된다. void bfs(int x, int y) { queueq; q.push(make_pair(x,y)); visited[x][y] = 1; while(!q.empty())..

728x90