목록전체 글 (231)
나의 개발일지

트랜스포머 모델은 자연어처리 분야에서 상당히 중요한 모델로 자리잡고 있습니다. 머신러닝의 발전과 함께 이러한 트랜스포머 모델은 많은 주목을 받고 있으며, 그 구조와 학습 방식에 대해 깊이 이해하고 사용하는 것이 필수적입니다. 이번 포스트에서는 트랜스포머 모델의 기본 개념부터 시작하여, 아키텍처, 학습 과정, 응용 분야, 그리고 BERT와 GPT 모델의 차이까지 살펴보겠습니다.트랜스포머 모델은 2017년 논문 "Attention is All You Need"에서 처음 소개되었습니다. 이 모델은 자연어 처리(NLP)에서 효과적인 성능을 보여주며, 특히 번역, 텍스트 생성, 질의 응답 등 다양한 작업에서 활용됩니다. 트랜스포머의 가장 큰 장점은 시퀀스 데이터를 처리하는 데 있어 RNN이나 LSTM보다 빠르고 ..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/142085🔑 우선순위 큐 (hqepq)먼저 무적권 횟수만큼 라운드를 클리어하고 큐에 적 정보를 저장한다. (heappush)무적권을 다 사용했으면 클리어 한 라운드 중 가장 적이 적었던 라운드를 무적권이 아닌 병사로 처리한다. (heappop)병사로 처리했으므로 무적권을 다시 사용할 수 있음위 방법으로 무적권을 효율적으로 사용해서 라운드를 최대한 클리어할 수 있다. from heapq import heappush, heappopdef solution(n, k, enemy): answer = 0 hq = [] for i in range(len(enemy)): ..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12905🔑 다이나믹 프로그래밍 (DP)점화식 : dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1]) + 1board[i-1][j-1] == 1일 때 dp배열의 왼쪽, 위, 왼쪽 위 중 최솟값 + 1을 dp[i][j]에 기록한다.board리스트(위) dp리스트(밑) 결과 def solution(board): answer = 0 dp = [[0] * (len(board[0]) + 1) for _ in range(len(board) + 1)] for i in range(1, len(board) + 1): for j i..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/147354🔑 정렬, 비트연산 XOR먼저 이 문제에서 컬럼이나 튜플의 순서는 0이 아닌 1부터 시작한다.2단계 정렬 : col 번째 값을 기준으로 오름차순, col 번째 값 동일하면 기본키 첫 번째 값 기준 내림차순 정렬음수 기준으로 정렬하면 내림차순 정렬 가능 → -x[0]3단계 나머지들의 합 : 정렬된 리스트 순회하면서 row_begin ~ row_end까지 튜플에 대해 나머지 합 계산 후 리스트에 저장4단계 저장된 나머지 합들 XOR 연산 : 나머지 합 저장된 리스트 순회하면서 모두 XOR 연산answer ^= S[i]로 answer에 XOR 연산된 값 저장 def solution(da..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/159993🔑 두 번의 BFS시작 위치에서 레버까지 BFS레버 위치에서 탈출 위치까지 BFS하나의 BFS 함수에 레버 여부를 매개변수로 두고 레버를 찾는지, 탈출구를 찾는지 구분레버를 못 찾거나, 탈출구를 못 찾으면 -1을 리턴 from collections import dequedef solution(maps): answer = 0 def bfs(start, lever): visit = [[0] * len(maps[0]) for _ in range(len(maps))] dx, dy = [0, 0, 1, -1], [1, -1, 0, 0] ..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42861 🔑 프림 알고리즘 출발 위치는 상관없음 현재 섬에서 갈 수 있는 섬들을 큐에 넣고 비용이 가장 적은 길을 뽑아내 섬을 연결하는 방식 큐를 힙으로 구현했기 때문에 항상 최소 비용의 길을 뽑아내서 이동함 최소 비용의 길을 뽑아서 갔으면 또 갈 필요가 없기 때문에 방문 리스트를 통해 못 가게 막음 from collections import defaultdict from heapq import heappush, heappop def solution(n, costs): answer = 0 graph = defaultdict(list) for cost in costs: graph[cost[0]..

문제 : https://school.programmers.co.kr/learn/courses/30/lessons/154540 🔑 BFS로 연결된 무인도를 탐색 maps를 순회하면서 무인도를 만나면('X'가 아닌 부분) 현재 위치에서 BFS 탐색을 실시 BFS를 시작하는 위치와 연결된 무인도들을 모두 탐색하면서 식량 개수를 카운트하고 'X'로 바꾼다. BFS 종료 시 식량 개수를 리턴 또 maps를 순회하면서 무인도를 찾고 BFS 탐색 반복 from collections import deque def solution(maps): def bfs(x, y): mx, my = [0, 0, 1, -1], [1, -1, 0, 0] q = deque([(x, y)]) food = int(maps[x][y]) maps..