분류 전체보기
[논문 리뷰] ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators (ICLR 2020)
1. 기존 pre-training 방식 LM(Language Modeling) 왼쪽에서 오른쪽으로 처리해 이전에 등장한 단어들을 기반으로 다음 단어를 예측 GPT 등 MLM(Masked Language Modeling) 랜덤하게 전체 토큰의 일부(일반적으로 15%)를 마스킹 처리한 후, 마스크 토큰의 원본 단어를 예측 LM과 비교해 양방향 정보를 모두 고려하는 장점 전체 입력 토큰 중 15%만 학습하는 단점 BERT, RoBERTa, XLNet 등 ⇒ ELECTRA에서는 MLM pre-training 방식의 단점을 보완해 Replaced token detection 방식을 제안 단점 1: 전체 토큰의 15%만 학습해 학습 비용이 많이 듦 단점 2: [MASK]토큰이 pre-training 단계에서만 등장..
[프로그래머스] 단어 변환 (Python)
문제 begin으로 주어진 단어에서 시작해 target 단어를 만드려고 한다. words에 주어진 단어 리스트를 사용해 target 단어로 변환할 수 있는데, 한 번에 알파벳이 1개만 다른 단어로 변환할 수 있다. 가장 짧은 변환 과정은? (문제 링크) 내 풀이 BFS로 풀이했으며 deque 라이브러리로 큐를 사용했다. words에 존재하지 않아 변환할 수 없는 단어는 0을 반환한다. (시작 단어, 0)을 queue에 넣는다. queue 요소를 하나 꺼내고, 꺼낸 단어와 1글자만 다른 단어를 큐에 삽입한다. 정답 단어를 찾으면 반환하고, 찾지 못하면 계속 반복한다. from collections import deque # 한 글자만 다른 단어인지 확인 def is_valid(word, target): s..
[LeetCode] #200. Number of Islands (Python)
문제 1인 부분은 땅으로 지나갈 수 있고, 0은 바다로 지나갈 수 없다. 땅/바다 정보가 들어있는 2차원 배열이 주어졌을 때, 총 섬의 개수를 구하여라. (문제 링크) 풀이 1 땅/바다 정보가 들어있는 지도 grid 를 탐색하면서 땅인 위치를 찾으면 해당 위치에서 4방향으로 땅이 있는지 dfs를 수행한다. dfs를 완료하면 연결된 땅을 다 방문했기 때문에 섬의 개수를 1 증가시킨다. dfs()를 살펴보면: 탐색하는 좌표 (x, y)의 위치가 지도의 크기를 벗어나거나 이미 방문할 수 없는 곳(바다 또는 이미 방문한 곳)이면 종료한다. 아래와 같이 탐색할 수 있는 조건으로 코드를 짤 수도 있다. 하지만 3개의 AND 조건을 확인하는 것 보다 OR 조건을 확인하는 시간이 짧아 탐색할 수 없는 조건을 사용했다...
[이코테] 고정점 찾기 (Python, 이진탐색)
문제 고정점(Fixed Point)이란 수열의 원소 중에서 값이 인덱스와 동일한 원소를 의미한다. 예를 들어 수열 a = {-15, -4, 2, 8, 13}이 있을 때 a[2] = 2 이므로 고정점은 2가 된다. 하나의 수열이 N개의 서로 다른 원소로 이루어지며, 모든 원소는 오름차순으로 정렬되어있다. 수열에서 고정점이 있다면 고정점을 출력하는 프로그램을 작성해라. 시간 복잡도 O(logN)인 알고리즘을 작성해야 한다. # 예시1 n = 5 arr = [-15, -6, 1, 3, 7] # res = 3 # 예시2 n = 7 arr = [-15, -4, 2, 8, 9, 13, 15] # res = 2 # 예시3 n = 7 arr = [-15, -4, 3, 8, 9, 13, 15] # res = -1 풀이 ..
[논문 리뷰] VGGNet (CVPR 2014)
안녕하세요 🐣 이번에 공부할 논문은 Very Deep Convolutional Networks for Large-Scale Image Recognition(VGGNet) 입니다. 아직 논문을 자세히 읽지 못해서 추후에 보완하도록 하겠습니다. 논문 원문은 여기서 확인할 수 있습니다. 논문 핵심 내용 CNN layer를 깊이 쌓을수록 성능이 향상된다. → layer에 따른 성능 차이를 확인하기 위해 동일한 크기의 커널을 사용하고 layer만 다르게 쌓아 실험을 진행했다. layer에 따른 성능 차이를 비교하기 위해 3*3크기의 간단한 커널을 사용했다. 아래는 본 논문에서 실험한 6가지 구조이다. AlexNet, ZFNet 처럼 224*244 크기의 컬러 이미지 사용 1개 or 여러개의 convolution ..
[프로그래머스] 괄호 변환 (Python) / 카카오 2020
문제 위의 규칙에 따라 입력 문자열을 "올바른 괄호 문자열"로 변환하려고 한다. 문제 링크 재귀는 특정 과정(규칙)을 특정 조건까지 수행한 결과를 반환하는 문제가 대부분이다. 몇 단계만 그림을 그려보면 재귀를 이해하는데 큰 도움이 된다. p = "()))(())" 일 때 올바른 괄호 문자열로 변화하는 과정을 그리면 위의 그림과 같다. 풀이 is_balanced() : 균형잡힌 문자열인지 확인하는 함수: ( 괄호와 ) 괄호의 개수가 같은지 확인 is_correct() : 올바른 문자열인지 확인하는 함수 → 스택(deque 또는 list)을 사용해 이전 요소와 짝이 맞으면(반대되는 괄호이면) 이전 요소를 삭제하고, 짝이 맞지 않으면(동일한 괄호이면) 삽입한다. do_split() : u, v를 쪼개는 함수 ..
[백준] 12865번 - 평범한 배낭 (python)
문제 N개의 물건은 각각 무게 W와 가치 V를 가진다. 최대 K 무게 만큼 가방에 담을 수 있을 때, 물건의 가치 합의 최대값은? 접근법 물건을 쪼갤 수 없는 배낭 문제 (0-1 kanpsack problem)에 속한다. DP 알고리즘으로 풀이한다. 물건을 쪼갤 수 있는 배낭 문제 (fractional knapsack problem)은 무게당 가치가 최대값이 되도록 설정하면 그리디로 최적해를 찾을 수 있다. 물건 4개를 사용해 최대 무게가 5인 가방의 가치가 최대가 되도록 만드는게 목표이다. 이를 NS(ABCD, 5) 라고 표현하겠다. 물건을 모두 사용하는 경우에서 물건을 1개씩 제외해 문제를 줄여나간다. 물건을 가방에 넣는 경우, 안 넣는 경우 2가지가 가능하다. 예를 들어 물건 D를 넣는 경우는 가방..
[프로그래머스] 메뉴 리뉴얼 (Python) / 카카오 2021
문제 문제 링크 각 손님이 주문한 단품 메뉴 중 원하는 개수만큼 메뉴를 조합해 코스 요리를 만드려고 한다. 이 때 코스요리에 속하는 단품 메뉴가 같은 경우에는 단품 주문을 가장 많이 한 조합만 구한다. 접근법 각 손님이 주문한 메뉴로 만들 수 있는 모든 코스요리 조합 구하기 → combinations 사용 각 코스요리의 주문 횟수가 2회 이상 & 코스요리 크기가 course에 해당하는 메뉴 필터링 코스요리 크기가 동일한 요리 중 가장 주문을 많이 한 메뉴만 남긴다. → target에 코스요리 이름만 저장 저장한 메뉴를 알파벳 순서로 정렬해 반환한다. 첫 번째 시도 각 손님의 주문을 탐색하면서: 2 ~ 주문한 음식의 개수 만큼 음식을 선택해 코스요리의 조합을 구한다. 주문 횟수가 2회 이상인 조합 중 음식..
13. UI 요구사항 확인
[ SECTION 13. UI 요구사항 확인 ] ➡ 개발할 시스템에 적용할 UI 관련 요구사항을 조사해 작성하는 단계 순서: 목표 정의- 활동 사항 정의- UI 요구사항 작성 Ⅰ. 목표 정의 ➡ 사용자 대상, 인터뷰를 통해 사업적, 기술적 요구사항을 이해 인터뷰는 개별적으로, 다양한 의견, 사용자 리서치 이전에 수행 리서치: 사용자들의 요구사항이나 불편사항을 파악하기 위해 진행, 리서치 전에 인터뷰를 진행하면 효과적인 리서치를 계획할 수 있음 Ⅱ. 활동 사항 정의 ➡ 조사한 요구사항을 토대로 앞으로 할 활동사항을 정의 목표, 예산, 계획, 우선순위를 협의 필요한 예산과 일정을 결정 인터뷰 내용을 바탕으로 프로젝트에 대해 정확히 이해하고 협의 Ⅲ. UI 요구사항 작성 ➡ 수집된 요구사항을 검토, 분석해 U..
12. UI 설계 도구
[ SECTION 12. UI 설계 도구 ] ➡ 사용자의 요구사항에 맞게 UI의 화면구조, 화면배치를 설계할 때 사용하는 도구 종류: 와이어프레임, 목업, 스토리보드, 프로토타입, 유스케이스 등 Ⅰ. 와이어프레임(Wireframe) 기획 단계의 초기에 제작 페이지에 대한(화면단위로) 대략적인 레이아웃, UI요소의 뼈대를 설계 개발자나 디자이너가 레이아웃을 협의, 진행상황을 공유하기 위해서 사용 ex) 손그림, 파워포인트, 포토샵 Ⅱ. 목업(Mockup) 디자인, 사용방법 설명, 평가를 위해 와이어프레임보다 실제화면에 가깝게 만든 정적인 형태의 모형 ex) 하워 목업, 발사믹 목업 Ⅲ. 스토리보드(Story Board) 와이어프레임+콘텐츠 설명, 페이지간 이동 흐름 설명을 세부적으로 적어둬야 참고할 때 좋..