chanmuzi의 등록된 링크

키자드에 등록된 총 379개의 포스트를 확인하실 수 있습니다.

Tistory

[BOJ] 17142 : 연구소 3 [브루트포스/BFS](Python)

문제 링크 https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 소스 코드 from itertools import combinations from collections import deque n,m = map(int,input().split()) graph = [[] for _ in range(n)] viruses = [] answers = [] walls = 0 for i in range(n): temp = list(map(int,input().split(..

Tistory

[BOJ] 1976 : 여행가자 [유니온파인드](Python)

문제 링크 https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 소스 코드 n = int(input()) m = int(input()) graph = [] for i in range(n): graph.append(list(map(int,input().split()))) plan = list(map(int,input().split())) parent = [x for x in range(n+1)] # 0부터 n까지 def find_parent(x): i..

Tistory

[BOJ] 1149 : RGB거리 [다이나믹 프로그래밍](Python)

문제 링크 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 소스 코드 import sys # 빠른 입력 graph = [] n = int(input()) for _ in range(n): graph.append(list(map(int,sys.stdin.readline().strip().split()))) dp = graph[0] for idx in range(1,n): pre_red,pre_green,pre_blue = d..

Tistory

[BOJ] 12865 : 평범한 배낭 [다이나믹 프로그래밍](Python)

문제 링크 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 소스 코드 import sys n,k = map(int,sys.stdin.readline().rstrip().split()) bag = [[0 for _ in range(k+1)] for _ in range(n+1)] items = [(0,0)] for i in range(n): w,v = map(int,sys.stdin..

Tistory

[프로그래머스] 바탕화면 정리 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(wallpaper): files_lu,files_rd = [],[] for row in range(len(wallpaper)): for col in range(len(wallpaper[row])): if wallpaper[row][col] == '#': files_lu.append((row,col)) files_rd.append((row+1,col+1..

Tistory

[BOJ] 1043 : 거짓말 [그래프](Python)

문제 링크 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 소스 코드 from collections import deque n,m = map(int,input().split()) trues = list(map(int,input().split())) knows = [False for _ in range(n+1)] # 진실을 아는 사람 체크 graph = [[] for _ in range(n+1)] # 사람 간 연결 그래프 parties = [] # 파티별 ..

Tistory

[BOJ] 15654 : N과 M (5) [백트랙킹](Python)

문제 링크 https://www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 소스 코드 n,m = map(int,input().split()) nums = sorted(list(map(int,input().split()))) # 정렬 필수 answers = [] sequence = [] def permutation(): if len(sequence) == m: # m개를 다 뽑았으면 answers.append(sequence[:]) # 복사!! retu..

Tistory

[BOJ] 15657 : N과 M (8) [백트랙킹](Python)

문제 링크 https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 소스 코드 n,m = map(int,input().split()) nums = sorted(list(map(int,input().split()))) answers = [] def recipe(v): if len(v) == m: # m개를 다 뽑았으면 종료 answers.append(v[:]) return for idx in range(n): # 리스트 내 숫자보다 작은 경우는 ..

Tistory

[Kaggle] OSError, Connection error? 인터넷을 연결하는 방법..(+ GPU 설정)

캐글에서 모델 짜는 연습을 해보려고 노트북 파일에 이것저것 끄적거리던 중... 충격적인 에러를 마주했습니다. from transformers import AutoModel model_name = 'bert-base-uncased' model = AutoModel.from_pretrained(model_name) 을 실행 시킨 결과.. 분명히 저는 이 코드를 캐글의 노트북으로 작성중이었는데 연결이 안된다는게 이해가 안갔습니다.. 내가 모델 이름을 잘못 입력했나..? c 그건 확실히 아닌 것 같고... 아! 혹시 Hugging Face 서버가 터졌나? (이전에도 서버가 터져서 유사한 이슈를 겪어봤습니다..) 원인을 알 수가 없었더랬죠... 구글링을 해보면 비슷한 이슈를 가진 사람들이 있었는데, 로컬에 파..

Tistory

[프로그래머스] 대충 만든 자판 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/160586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def check(keylist,character): # 인덱스 반환 함수 return keylist.index(character) + 1 def solution(keymap, targets): answer = [] for target in targets: # 각 타겟에 대해 tmp_list = [] for idx in range(len(target)): # 타겟의 각 글자..

Tistory

[프로그래머스] 짝지어 제거하기 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(s): stack = [] for idx in range(len(s)): if not stack: # 스택이 비어 있는 경우 stack.append(s[idx]) else: # 스택의 마지막 글자와 동일한 것이 들어오는 경우 if stack[-1] == s[idx]: stack.pop() else: # 스택의 마지막 글자와 다른 글자가 들어오는 경우 s..

Tistory

SQuAD paper review(해석)

SQuAD는 Stanford Question Answering Dataset의 약자로, 스탠포드 대학에서 QA를 위해 제작한 데이터셋입니다. 논문을 직접 읽어보고 싶으시다면 SQuAD: 100,000+ Questions for Machine Comprehension of Text 라는 제목의 논문을 직접 보실 수 있습니다. (https://arxiv.org/abs/1606.05250) 저는 MRC(Machine Reading Comprehension)에 관한 프로젝트를 진행하면서 학습과 평가 데이터셋으로 사용되는 SQuAD에 대해 자세히 알고 싶어서 이 논문을 읽어봤습니다. Question Answering과 관련한 여러 논문에서 이 데이터셋을 모델의 성능을 평가하는 지표로 자주 활용합니다. 본 포스팅은..

Tistory

[BOJ] 1929 : 소수 구하기 [정수론](Python)(feat. 에라토스테네스의 체)

문제 링크 https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 소스 코드 m,n = map(int,input().split()) sosu = [1 for _ in range(n+1)] sosu[1] = 0 for num in range(2,int(n**0.5)+1): if sosu[num]: # 배수로 제거되지 않은 숫자인 경우 # 이 숫자의 배수는 전부 0으로 바꿔준다 for multiple in range(num+num,n+1,num): sosu[multiple] = 0 # ..

Tistory

[프로그래머스] 둘만의 암호 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(s, skip, index): skip = [ord(x) for x in skip] # 생략할 번호 alpha_num = [x for x in range(97,123) if x not in skip] answer = [ ] for idx in range(len(s)): char_num = alpha_num.index(ord(s[idx])) # 리스트에..

Tistory

[프로그래머스] 크기가 작은 부분문자열 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(t, p): answer = 0 width = len(p) # 비교 문자열 길이 huddle = int(p) # p의 정수값 for idx in range(len(t)-len(p)+1): if int(t[idx:idx+width])

Tistory

[프로그래머스] 카드 뭉치 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(cards1, cards2, goal): for word in goal: # 카드 뭉치 둘 다 남은 경우 if cards1 and cards2: word1,word2 = cards1[0],cards2[0] if word == word1: cards1.pop(0) elif word == word2: cards2.pop(0) else: return 'No..

Tistory

[BOJ] 11053 : 가장 긴 증가하는 부분 수열 [DP](Python)

문제 링크 https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 소스 코드 n = int(input()) arr = list(map(int,input().split())) dp = [1] * n # dp 테이블 초기화 for i in range(1, n): # 2번째 원소부터 for j in range(0, i): # 그 이전 원소들과 비교하여 if arr[i] > arr..

Tistory

[프로그래머스] 가장 가까운 같은 글자 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/142086?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(string): characters = set(list(string)) # 문자열을 구성하는 알파벳set # '알파벳 : -1'로 dict 생성 my_dict = {character:-1 for character in characters} answer = [] for idx in range(len(string)): # 처..

Tistory

[BOJ] 1195 : 킥다운 [브루트포스](Python)

문제 링크 https://www.acmicpc.net/problem/1195 1195번: 킥다운 첫 줄에는 첫 번째 기어 파트를 나타내는 1과 2로 구성된 문자열이 주어진다. 두 번째 줄에는 마찬가지로 두 번째 기어 파트를 나타내는 1, 2로 구성된 문자열이 주어진다. 여기서 1은 홈을, 2는 www.acmicpc.net 소스 코드 a = input() b = input() answer = len(a) + len(b) # 최악의 경우 # 길이가 긴 것을 a, 짧은 것을 b로 설정 if len(a) < len(b): a,b = b,a gap = len(a) - len(b) # 길이가 짧은 것이 왼쪽에 길게 늘어지는 경우 # 000002112112112 # 221211200000000 for zero in ..

Tistory

[BOJ] 2606 : 바이러스 [그래프탐색](Python)

문제 링크 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 소스 코드 from collections import deque c = int(input()) graph = [[] for _ in range(c+1)] n = int(input()) for i in range(n): # 양방향 간선 추가 a,b = map(int,input().split()) graph[a].append(b) graph[b].append(a) # 이 문제에서는 정렬 불필요해..

Tistory

[프로그래머스] 문자열 나누기 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(string): answer = 0 standard,others = '','' standard_cnt,others_cnt = 0,0 for idx in range(len(string)): # 기준 문자열이 없으면 첫글자로 설정 if not standard: standard = string[idx] if string[idx] == standard: # ..

Tistory

BERT와 BERT 파생모델 비교(BERT, ALBERT, RoBERTa, ELECTRA, SpanBERT)

자연어처리 분야에서 아주 큰 입지를 차지하고 있는 모델인 BERT와 BERT 기반의 파생모델들에 대해 공부한 내용을 정리해봤습니다. 구글 BERT의 정석(한빛미디어)라는 책과 각 모델 관련 논문, 그리고 인터넷의 여러 게시물들을 참고하여 최대한 간략하게 정리했습니다. 순서는 다음과 같습니다. 1. BERT 2. ALBERT 3. RoBERTa 4. ELECTRA 5. SpanBERT 실제로 자연어처리 분야의 여러 태스크를 수행할 때 자주 사용되는 RoBERTa, ELECTRA와 같은 모델들이 어떤 배경에서 등장하고 어떤 특징을 지니고 있는지 간단히 확인할 수 있도록 비교했습니다. 혹시 제가 잘못 알고 있거나 잘못 작성한 내용이 있다면 피드백 부탁드리겠습니다 c (참고로 노션에서 작성한 내용을 가져와 재구..

Tistory

Google Cloud Platform(GCP) VM 인스턴스/버킷 생성하기, CLI로 파일 업로드/다운로드 하기

cloud 시장에서는 사실 AWS가 Google Cloud Platform보다 많이 쓰이지만, GCP가 무료 크레딧을 제공해주기 때문에 실습해보기 좋다고 해서 강의 내용을 따라 실습을 진행해보았습니다. 1. GCP 가입하기 https://cloud.google.com/ 클라우드 컴퓨팅 서비스 | Google Cloud 데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요. cloud.google.com 구글 계정이 없는 분은 없으시겠죠? (생성하기가 워낙 쉬워서 다들 몇 개씩은 보유하고 계시니까요..!) 그럼 위 페이지에 접속하셔서 무료로 시작하기 버튼을 눌러 줍니다. 그러면 국가와 소속 기관을 고르고 서비스 약관에 동의하..

Tistory

[프로그래머스] 명예의 전당 (1) (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 import heapq def solution(k, score): stage = [] answer = [] for idx in range(len(score)): # 리스트 내 원소를 대소비교하여 추가 heapq.heappush(stage,score[idx]) # 리스트길이가 k 초과 시 최솟값 pop if len(stage) > k: heapq.heappop(stage) #..

Tistory

[BOJ] 10799 : 쇠막대기 [자료구조](Python)

문제 링크 https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 소스 코드 question = input() stack = [] answer = 0 for idx in range(len(question)): if question[idx] == '(': # 열린 괄호는 추가 stack.append('(') else: # 닫는 괄호의 경우 stack.pop() if question[idx-1] == '(': # 레이저인 경우 answer += len(stack) ..

Tistory

[BOJ] 1244 : 스위치 켜고 끄기 [구현](Python)

문제 링크 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 소스 코드 k = int(input()) switches = list(map(int,input().split())) n = int(input()) for i in range(n): sex,num = map(int,input().split()) # 성별,숫자 입력 if sex == 1: # 남자인 경우 for j in range(num-1,k//num*num,num): # 배수 인덱..

Tistory

[프로그래머스] 기사단원의 무기 (Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/136798 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(number, limit, power): # 범위 주의 numbers = [0 for x in range(number+1)] # 1부터 number까지 포함 for i in range(1,number+1): # 배수 인덱스에 +1 for j in range(i,number//i*i+1,i): numbers[j] += 1 # limit 초과시 power..

Tistory

[BOJ] 1260 : DFS와 BFS [그래프 이론](Python)

문제 링크 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 소스 코드 from collections import deque n,m,v = map(int,input().split()) graph = [[] for _ in range(n+1)] for i in range(m): # 양방향 간선이므로 둘 다 그래프에 추가 a,b = map(int,input().split()) graph[a].append(b) g..

Tistory

[BOJ] 1966 : 프린터 큐 [자료구조](Python)

문제 링크 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 소스 코드 c = int(input()) for i in range(c): n,m = map(int,input().split()) # 입력 리스트, 입력 당시의 순서를 기록할 리스트 my_list = list(map(int,input().split())) order_list = [x for x in range(len(my_list))] cnt = 0 while True: # 맨 앞의 원소가..

Tistory

[네이버 부스트캠프 AI Tech 4기] 수료 기념 후기 (+ for 부캠 지원자)

간단 소감 작년(22년) 8월에 부스트캠프 테스트에 통과해서 9월부터 교육을 받기 시작했는데, 5개월이라는 시간이 훌쩍 지나 벌써 수료를 해버렸습니다... 정신 없이 보낸 시간들 속에 스스로 성장했는지조차 제대로 모르겠습니다 c 단순히 컴퓨터와 관련된 분야에서 일을 하고 싶다는 막연한 생각으로 뛰어든 부캠 생활은 순탄치만은 않았던 것 같습니다. 좀 더 적나라하게 말하자면 괴로웠던 것이 사실입니다. 스스로의 부족함을 깨닫는 것이 원동력이 될 때도 있지만 무기력해지는 원인이 되기도 했던 것 같아요. 처음 부캠 생활을 시작하던 저는 나름 자신감에 차있었습니다. 아직 모르는 것들은 공부하면 되고 남들이 걸어간 길을 나는 빠르게 쫓아갈 수 있다,고 생각했었죠 ㅋㅋㅋ.. 그게 얼마나 오만한 생각이었는지를 깨닫기까지..

Tistory

[프로그래머스] 푸드 파이트 대회(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(food): # 딕셔너리에 숫자별 개수 저장 foods = {} for i in range(1,len(food)): foods[i] = food[i] // 2 answer = '0' # 큰 숫자부터 작은숫자까지 0을 감싸도록 한다 for tmp in reversed(foods.keys()): answer = str(tmp)*foods[tmp] + an..

Tistory

[프로그래머스] 과일 장수(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(k, m, score): score = sorted(score) # 오름차순 정렬 answer = 0 # 전체 개수를 m으로 나눈 몫만큼 for i in range(len(score)//m): # m개씩 pop for j in range(m-1): score.pop() # 정렬했으므로 마지막으로 pop하는 것이 최솟값 answer += score.po..

Tistory

[BOJ] 2504 : 괄호의 값 [자료구조](Python)

문제 링크 https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net 소스 코드 string = input() stack = [] score = 0 ratio = 1 # 이 비율에 따라 점수를 계산 for idx in range(len(string)): if string[idx] == '(': # 여는 괄호인 경우 ratio *= 2 stack.append(string[idx]) elif string[idx] == '[': # 여는 괄호인 경우 ra..

Tistory

[프로그래머스] 옹알이 (2)(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/133499 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 import re def solution(babbling): # 각 원소에 속한 발음 가능한 단어를 숫자로 치환 for i in range(len(babbling)): babbling[i] = babbling[i].replace('aya','1') babbling[i] = babbling[i].replace('ye','2') babbling[i] = babbling[i].r..

Tistory

[프로그래머스] 햄버거 만들기(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/133502# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(ingredient): cnt = 0 stack = [] for exp in ingredient: stack.append(exp) # 지금까지 쌓인 재료가 4개 이상이고 뒤에서부터 4개로 햄버거가 될 때 if len(stack) >= 4 and stack[-4:] == [1,2,3,1]: cnt += 1 # 뒤에서 네 개를 pop for i in r..

Tistory

[프로그래머스] 콜라 문제(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/132267 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(a, b, n): answer = 0 # 가지고 있는 콜라병이 교환 가능한 동안에 while n >= a: # 빈 병 개수 추가 answer += (n // a * b) # 교환하지 못하고 남은 병 + 새로 얻은 콜라 n = (n % a) + (n // a * b) return answer 해설 단순 구현 문제 while문의 조건을 이용해 교환이 가능..

Tistory

[프로그래머스] 삼총사(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 from itertools import combinations def solution(number): nums = list(combinations(number,3)) cnt = 0 for num in nums: if sum(num) == 0: cnt += 1 return cnt 해설 combinations(조합) 함수를 이용한 간단한 풀이 combinations combin..

Tistory

[프로그래머스] 숫자 짝꿍(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 from collections import Counter def solution(X, Y): # 숫자 개수 세기 nums = Counter(X) & Counter(Y) if not nums: return '-1' # 공통 없는 경우 elif list(nums) == ['0']: return '0' # 0만 공통인 경우 nums_order = sorted(list(nums),..

Tistory

[프로그래머스] 개인정보 수집 유효기간(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(today, terms, privacies): terms_dict = {} # 알파벳이 의미하는 기간을 dict 형태로 재가공 for term in terms: alphabet, month = term.split() terms_dict[alphabet] = int(month) y,m,d = today.split('.') # 년,월,일 today = i..

Tistory

Introduction to Programming Frameworks

1. Deep Learning Frameworks 이 강의가 제작되던 시기에도 이미 딥러닝 분야에서 활용할 수 있는 다양한 프레임워크들이 존재했다. 어떤 프레임워크를 사용할 것인지는 사용자의 선호에 따라 달라질 수 있다. 하지만 현재 오픈 소스인 것이 이후에는 어떤 이유에 의해서든지 아니게 될 수가 있으므로 장기적으로는(개인의 관점은 아닌듯하다) 어떤 프레임워크를 선택할 것인지에 대해 보다 신중한 판단이 요구된다. 2. TensorFlow Motivating problem Cost Function이 위와 같다고 했을 때 TensorFlow를 사용하면 W와 b를 간편하게 구할 수 있다. import numpy as np import tensorflow as tf w = tf.Variable(0, dtype..

Tistory

Quiz & Assignment

1. Hyperparameter tuning, Batch Normalization, Programming Frameworks hyperparameters의 숫자가 적으면 grid search를 해도 될까? 아니다. hyperparameter 숫자가 적다고 하더라도 특정 parameter가 다른 parameter에 비해 지배적인 영향력을 줄 수 있기 때문이다. 우선순위가 높은 hyperparameter 두 개를 고르시오 learning rate alpha, momentum의 beta(학습 속도에 영향을 주게 됨) hyperparameter search를 baby sit(판다 버전) 스타일로 할 것인가? 여러 모델을 parallel(캐비어 버전)하게 돌릴 것인가? 가지고 있는 자원(컴퓨터)에 달린 문제! 최..

Tistory

Hyperparameter Tuning

1. Tuning Process Hyperparameters 모델을 학습할 때 정해야 하는 여러 가지 hyperparameter가 존재한다. 교수님이 이 중 가장 중요하게 생각하는 것은 learning rate(alpha)이고, 나머지는 사용하는 optimizer 등에 따라 달라진다. 그렇다면 이 hyperparameters를 어떤 값으로 tuning하는 것이 좋은 방법일까? Try random values : Don't use a grid 예를 들어 두 개의 hyperparameter가 존재하는 경우 이를 격자처럼 딱딱 정해진 값으로 테스트 해보는 것은 바람직하지 않다. 위 그림에서 만약 hyperparameter 1이 hyperparameter 2에 비해 지배적인 영향력을 가지고 있다고 가정한다면, ..

Tistory

Batch Normalization

1. Normalizing Activation in a Network Normalizing inputs to speed up learning gradient descent 과정에서 빠르게 local minima에 도달하는데 normalization이 도움이 된다는 것은 이전에 배웠다. 그렇다면 neural network에서, 즉 hidden layer가 여러 개인 경우에는 normalization을 언제언제 적용해야 할까? 다시 말하자면 input만 normalization을 해야할까? 아니면 activation function을 통해 나온 결과값에도 적용을 해야할까? 교수님은 둘 다 하는 것을 default로 생각하라고 하셨다. activation function의 결과가 어떻게 나올지는 확실히 예측할..

Tistory

Multi-class Classification

1. Softmax Regression Recognizing cats, dogs, and baby chicks 이전에 다룬 내용은 두 개의 class로 분류하는 것이었습니다. 이를 테면 고양이인지 아닌지를 구분하는 binary classification이라고 할 수 있습니다. 이번에는 두 개의 class가 아닌 여러 개의 class로 구분하는 상황을 가정해보겠습니다. 위 예시에서는 cat, dog, chick, others로 구분합니다. 따라서 neural network의 output layer는 [4,1]의 shape을 갖게 되고 이 벡터는 입력 x가 주어졌을 때 각 class에 해당될 확률을 뜻하게 됩니다. Softmax layer 여러 개의 class가 존재할 때 이를 분류하는 학습을 하는 netw..

Tistory

파이썬 정규표현식 연습(비밀번호 패턴, html 태그 제거)

오늘은 정규표현식에 대해 공부한 내용을 조금 정리해보고자 합니다. 사실 정규표현식 자체가 워낙 익숙치 않기도 하고 자주 사용되는 느낌은 아니라서... '필요할 때마다 검색해서 쓰면 되겠지~' 생각했는데 막상 쓰고 싶을 때 활용할 능력도 없었습니다.. 하지만 정규표현식은 크롤링과 자연어 전처리에서 필수적이라고 합니다. 인공지능 모델이 학습하기 위한 좋은 품질의 데이터를 마련하기 위해서 필요한 것이죠! 그래서 이번에 정규표현식을 활용했던 내용을 토대로 정규표현식에 관한 아주 기초적인 것들을 정리해보겠습니다. 메타 문자 . ^ $ * + ? { } [ ] \ | ( ) 메타 문자란 원래 그 문자가 가진 뜻이 아닌 특별한 용도로 사용하는 문자를 뜻합니다. 이 문자들은 정규표현식에서 다른 문자들과 달리 조금 특..

Tistory

2022(하반기) 삼성전자 DX SCSA 전형 면접 불합격 후기

2022년 12월 9일 금요일 삼성전자 DX SCSA 면접 불합격 2022년 11월 18일 금요일에 응시한 종합 면접에서 불합격했습니다.. 삼성 하반기 공채의 마지막 면접으로 알고 있었는데, 마지막 순서로 면접에 응시를 했음에도 불구하고 무려 3주나 기다려 불합격 소식을 접하게 됐네요 c 신경을 쓰지 않으려 해도 나올 때가 됐는데.. 하면서 결과를 기다리게 되어서 참 힘들었는데 아쉽습니다. 면접 관련해서는 당연히도 보안 서약서도 작성하므로 공개할 수 없는 내용들이 많습니다. 전체적인 인상이나 흐름 정도만 정리할 것이고 개인적으로 면접을 준비하면서 느낀 점들을 적어보고자 합니다. 1. 인성검사 몇 문항인지 정확히 기억나지도 않습니다만 제한된 시간에 주어진 것들을 모두 체크하려면 고민할 시간 따위는 없습니다..

Tistory

Optimization Algorithms(4) - Learning Rate Decay

1. Learning Rate Decay Learning Rate Decay 일반적인 mini-batch를 이용하면 파란색과 같은 그래프가 그려진다. 즉, 어느 정도의 noise를 포함한 형태이면서 절대 global minimum에 convergence(수렴)하지 못하고 주변을 배회(wandering)하게 된다. 이를 해결하기 위해 제시된 것이 Learning Rate Decay로 학습이 진행됨에 따라 learning rate을 감소시키는 것을 말한다. 그러면 위 그림에서 초록색과 같은 그래프가 그려진다. 즉, 초반에는 큰 폭으로 학습이 진행되고 이후에는 그 폭을 줄이면서 global minimum에 convergence(수렴)하게 된다. Leraning rate decay epoch는 주어진 데이터를 ..

Tistory

Quiz & Programming Assignments

1. Optimization Algorithms (Quiz) minibatch, layer, example에 대한 notation 각각 { }, [ ], ( ) 기호를 사용한다. vectorization Batch gradient descent는 한꺼번에 모든 데이터를 묶어 학습하겠다는 것이다. 따라서 memory의 문제만 없다면 vectorization을 가장 많이 수행하는 학습법일 것이다. 그러나 batch gradient descent는 progress를 진행하기 전에 전체 training set을 처리해야 한다는 문제점이 있다. 한편 stochastic gradient descent는 여러 example을 vectorization 할 수 없다는 단점이 있다. iteration - cost(J) g..

Tistory

F1 Score, Confusion Matrix, Precision & Recall (trade-off) 왕초보를 위한 설명

여러 대회의 평가 metric으로 사용되는 F1 Score와 이를 이해하는데 필요한 여러 개념들을 정리한 글입니다. 부족한 것이 많아 잘못 이해하고 작성한 것이 있을 수 있으니 너그러이 이해해주시고 피드백 해주신다면 너무 감사하겠습니다. ️ (가장 중요한 내용들은 글의 최하단에 간단히 요약해두었으니 정리가 필요하신 분들은 마지막만 보셔도 좋습니다!!) F1 Score F1 Score는 어떤 실험이나 예측이 제대로 이루어졌는지 확인할 수 있는 지표입니다. precision과 recall의 조화 평균(harmonic mean)으로 구합니다. 이 수식을 이해하기 위해선 Confusion Matrix(혼동 행렬), 그리고 여기에 포함되는 precision(정밀도), recall(재현율)의 개념을 알아야 합..

Tistory

Optimization Algorithms(2) - Exponentially Weighted Averages

1. Exponentially Weighted Averages (지수 가중 평균) Temperature in London 영국의 1년 날씨를 날짜에 따라 표시한 그래프다. 전날과 오늘의 관계를 수식적으로 표현하여 그래프가 그려지는 양상을 예측하고자 한다. Exponentially weighted averages V_t 로 표현된 수식이 Exponentially wieghted averages에 대한 수식이다. 이는 과거의 비중(가중치)을 베타로 표현하고 오늘의 비중을 세타로 표현하고 있다. 따라서 베타가 아주 큰 경우에는 과거의 기록을 더 많이 반영하게 되므로 그래프가 완만한 초록색 선으로 표현된다. 대신 말 그대로 과거의 기록을 더 많이 반영하기 때문에 실제 데이터보다는 약간 우측에 치우치게 된다. 반..

Tistory

Optimization Algorithms(3) - Gradient Descent

1. Gradient Descent with Momentum Gradient descent example 빨간 점을 global minimum이라고 본다면 일반적인 Gradient Descent를 수행했을 때는 파란색 그래프와 같은 양상이 나타날 것이다. 우리는 위 아래로 흔들리는 폭을 줄이면서도 보다 큰 보폭으로 global minimum에 접근할 수 있도록 하는 방법을 떠올려볼 수 있다. 대표적인 방식 중 하나가 Momentum이다. 이는 gradient descent를 수행하는 매 step이 독립적인 것이 아니라 현재 step에 이전 step이 영향을 주는 것으로 받아들이는 방식이라고 볼 수 있다. 즉, exponentially weighted averages를 구하는 방식처럼 현재항과 이전항에 가..

Tistory

Setting Up your Optimization(2)

4. Numerical Approximation of Gradients Checking your derivative computation 미분의 정의를 통해 접선의 기울기를 계산하는 과정을 이해해보자. x = θ일 때 아주 작은 값 ε = 0.01을 더하고 빼서 함수값을 구해본다. 본래 기울기는 'y의 변화량 / x의 변화량' 이므로 {f(θ+ε) - f(θ-ε)} / 2ε 이 기울기가 된다. 이는 함수 f(θ) = θ^3을 미분하여 구한 g(θ) = 3θ^2와 근사한 결과다. 실제 값을 대입해보면 미분값이 3.0001로 기존 도함수 g를 통해 구한 3과 0.0001 차이가 나는 것을 알 수 있다. 계산은 이와 같은 방식으로 이뤄진다. 이때의 error는 O(ε^2)로 표현된다. 이를 기존 미분 정의와 ..

Tistory

Quiz & Assignments

1. Practical aspects of Deep Learning (Quiz) examples의 수에 따라 train/dev/test set을 어떤 비율로 split 해야 하는가? 10,000개 정도로 작을 경우 : 60/20/20 20,000,000개 정도로 많을 경우 : 99/0.5/0.5 training, test set은 같은 source로부터 구해진 것을 사용해야 한다. 그렇지 않을 경우 학습이 제대로 이루어지지 않는다. 'high bias' 문제가 있는 경우 hidden layer 숫자를 늘려(deeper network) 해결을 시도할 수 있다. 'high variance' 문제의 경우 더 많은 train data를 확보하거나 regularization을 시도할 수 있다. Data augme..

Tistory

Optimization Algorithms(1) - Mini-batch

1. Mini-batch Gradient Descent Match vs. mini-batch gradient descent 많은 양의 데이터를 처리해야 하는 딥러닝은 연산 시간을 줄이는 여러 기법들이 필요하다. 그 중 하나가 여러 데이터를 일부씩 묶어 계산하는 방식인 mini-batch gradient descent이다. 만약 처리해야 하는 데이터의 개수가 5,000,000개라면 어떻게 될까? 이 많은 양의 데이터를 한꺼번에 forward하고 backward 하는 것은 엄청난 computing power를 필요로 할 것이고, 이것이 뒷받침된다고 하더라도 썩 좋은 시간적 효율을 보이진 못할 것이다. 따라서 우리는 이를 일정 개수(위 예에서는 1,000개)씩 묵어서 연산을 시도하기로 한다. 이때 묶인 각 b..

Tistory

Setting up your Machine Learning Application

1. Train / Dev/ Test sets Applied ML is a highly iterative process ML은 다양한 분야에 적용되고 있다. NLP, CV, Speech Recognitoin, 등.. 그러나 어떤 분야든지간에 Model에 대한 적합한 hyper parameter를 한 번에 구할 수는 없다. 전문가라 하더라도 위와 같은 cycle을 반복적으로 돌리면서 모델을 적절히 변경할 수 있게 되는 것이다. Train/dev/test sets 우리는 전체 데이터셋을 흔히 train/dev/test 셋으로 나눈다. train셋에서는 말 그대로 학습을 진행하고, dev셋에서는 우리가 학습시킨 알고리즘과 다른 알고리즘을 cross하여 비교할 수 있으며 test셋에서는 최고의 성능을 보였던 모..

Tistory

Regularizing your Neural Network

1. Regularization Logistic regression High variance 문제가 있을 때 데이터를 늘리기 어려운 상황이라면 regularization을 적용할 수 있다. loss function으로 구한 cost function J를 최소화하는 logistic regression을 예시로 들어 내용을 살펴보자. 기존의 logistic regression에서는 J가 prediction과 target 간의 차이를 평균낸 것으로 정의된다. 여기에 lambda라는 일종의 hyper parameter와 전체의 개수 m으로 나눠준 값을 계수로 갖는 L2 norm을 곱한 값을 더해준다. 쉽게 말하면 '특정 계수와 L2 norm을 곱한 값의 평균'을 더해준다는 것이다. 이때 두 변수 w와 b에 대해..

Tistory

Setting Up your Optimization Problem

1. Normalizing Inputs Normalizing training sets x = [x1, x2] feature로 구성된 training set의 분포를 살펴보자. 우선 모든 x를 x의 mean(평균)만큼 빼준다(subtract). 그러면 두 번째 그림처럼 x1 feature 축에 대해 분포가 정렬된다. 다음으로는 x의 분산을 구해 x 전체를 분산으로 나눠준다. 이때 이미 평균을 뺀 값이므로 x 제곱의 평균을 구하는 것이 바로 분산이 된다. (분산을 구하는 기존 식은 'x-m' 제곱의 평균을 구하는 것이기 때문) 그러면 마지막 그림처럼 분산을 반영한 분포로 변형된다. 이러한 변형을 train set에 대해 적용했다면 test set에도 동일한 평균과 분산값으로 변형을 해줘야 한다. 즉, 두 s..

Tistory

Non-linear regression

1. General non linear least squares non-linear function의 최솟값을 찾는 과정을 식으로 전개하면 위와 같다. 이때도 마찬가지로 loss에 해당하는 카이제곱을 구해야한다. 그러나 변수가 여러 개이므로 주어진 y식을 각 변수에 대해 편미분한 결과를 파악해두어야 한다. linear regression를 수행할 때와 마찬가지로 카이제곱 벡터가 0이 될때까지 기존의 값에서 카이제곱의 미분한 결과를 반복적으로 빼주어야 한다. 이때 dy / da_k는 y가 a1, a2로 구성된 식이므로 이를 계산하기 전 식을 나타내고 있다. 2. Fitting a non-linear function (Quiz) 비선형 함수를 적용할 수 있는 데이터 분포 고르기 카이제곱 식에 대해 올바른 설..

Tistory

2022(하반기) 삼성전자 DX SCSA 전형 GSAT 합격후기

2022년 11월 1일 화요일 삼성전자 DX SCSA GSAT 합격 지난 10월 22일(토) 삼성 직무적성검사에 응시했습니다. 아무래도 삼성 GSAT의 컷을 궁금해하실 분들을 위해 결과적으로 말씀드리면, "수리 16/19, 추리 23/25, 총 39/44 (정답/풀이)" 난이도는 상반기 대비 쉬웠음 입니다. 저는 토요일 오전 시간대에 시험에 응시했는데, 확실히 상반기에 응시했을 때보다 난이도가 훨씬 낮다고 느꼈습니다. 특히 수리 영역을 풀이한 개수가 평균적으로 많이 올랐더라구요. 지난 번에는 18개 이상을 풀이하면 굉장히 잘 한 편에 속했는데, 이번에는 19개 혹은 20개를 풀이한 사람도 꽤나 많아 보였습니다. 다른 분들 풀이한 개수를 들어보면 40개 초중반도 적지 않게 있었구요. 참고로, 가채점 결과 ..

Tistory

Fitting as minimisation problem

1. Welcome to Module 5! 최적의 평균과 분산을 구하는 방법에 대해 생각해보자. 어떤 함수에 대해 임의의 x값을 대입하고 그 미분계수를 통해 반복적으로 최적의 x값을 찾아나갈 수 있다. 이때 함수값을 미분계수로 나눈 값을 빼는 방식을 '반복(iterate)'하면 된다. 이런식으로 과정을 반복하는 방법을 'Newton-Raphson'이라고 부른다. 시작값을 잘못 설정하면 위와 같이 closed loop에 갇힐 수 있다. 혹은 너무 작은 미분계수를 갖는 점에서 시작하면 x의 변화량이 거의 없어서 의미 없는 학습을 반복하게될 가능성이 있다. 2. Newton-Raphson in one dimension (Quiz) 도함수 구하기 다항함수에 대해 미분을 수행한 결과를 직접 입력하면 된다. New..

Tistory

Lagrange multipliers

1. Constrained optimisation 이전에 다루었던 함수 f(x,y) = x^2y에 대해서 contour를 생성하면 오른쪽 그림과 같다. 우리는 gradient vector를 통해 최댓값을 갖는 x,y 지점에 이를 수 있다. 이때 최댓값에 이를 수 있는 x,y 쌍의 범위를 원의 형태로 제한(constraint)할 수 있고 이를 함수 g로 표현 가능하다. 위에서 살펴본대로 f의 값을 최대화하기 위해 제약(constraint) g 함수를 이용할 수 있다. 이때 두 벡터가 만나는 지점을 구하는 방정식에 Lagrange multiplier가 이용된다. 위 방정식을 통해 Lagrange multiplier를 구하고 이를 기존의 식에 다시 대입하여 x와 y의 식을 재구성한다. 결과적으로 f를 최대화,..

Tistory

Into to linear regression

1. Simple linear regression 어떤 데이터들을 잘 설명하는 직선을 구할 수 있다. 데이터들을 기반으로 어떤 직선이 데이터의 분포를 가장 잘 표현할 수 있는지에 대해 고민하는 것이다. 이 직선으로 예측된 값이 실제값과 얼마나 떨어져있는지 확인하기 위한 식이 카이제곱이다. 실제값에서 예측값을 빼서 제곱한 값들을 모두 더한 것이 된다. 이 값이 곧 오차(loss)를 의미하게 되고 이를 최소화해야 우리가 원하는 최적의 직선을 얻을 수 있게 된다. 결국 이 오차를 끝까지 최소화하면 그 값은 0이 될 것이다. 따라서 카이제곱을 구성하는 변수인 m과 c에 대해 편미분을 수행하여 카이제곱벡터를 구하고, 이것이 영벡터와 같아지는 때가 언제인지 구하면 된다. 위 과정에서 c와 m에 대한 식을 정리할 수..

Tistory

Taylor series for approximations(1)

1. Building approximations 1) 이 cooking book을 읽는 사람과 내가 비슷한 오븐을 쓴다고 가정 2) 치킨도 비슷하다고 가정 다른 조건들이 유사하다고 가정하면 변수들을 줄일 수 있고 이를 통해 간단한 식으로 근사할 수 있게 된다. 2. Power series Truncated series 주어진 함수 g의 변수를 하나씩 늘려나가면서 기존의 그래프와 얼마나 유사한지 확인하고 있다. 변수를 늘릴수록 기존의 그래프와 유사해지는 것을 볼 수 있다. 이런 방식으로 쭉 늘어놓은 함수의 모음을 truncated series라고 부른다. 3. Matching functions and approximations (Quiz) 기존의 그래프를 보고 적절한 근사를 고르는 문제들이 출제되어 있다...

Tistory

Taylor series for approximations(2)

1. Power series details 기존과 달리 Taylor series에서는 x=0이 아닌 어떤 point에서 접근해도 상관 없다고 본다. 따라서 여기서는 x = p로 가정하고 접근한다. Taylor Series에서 p = 0을 대입하면 기존의 Maclaurin Series와 동일해지는 것을 확인할 수 있다. 위에 정리된 식처럼 만약 2차식을 미분하게 되면 미분 과정에서 계수 때문에 2!이 분모가 될 것임을 짐작 가능하다. 이 과정을 일반화한 것이 Taylor Series가 된다. 2. Applyting the Taylor series (Quiz) 여러 f(x)에 대해 x = 0(Maclaurin) 또는 x = p(Taylor) 의 근사 함수를 구하는 문제가 출제된다. 이를 위해서 분수함수의 미..

Tistory

Multivariable Taylor Series

1. Linearisation 기존 Taylor Series에서는 p로부터 얼마나 떨어져있는지를 기준으로 표현이 되었다. 이제 p를 델타 p 그리고 이것을 델타 x로 치환하여 표현한다. 실제 미분을 여러번 수행하면 그 결과값은 굉장히 작아지기 때문에 error로 보고 O로 묶어서 표현할 수 있게 된다. 심지어 f(x)에 대한 표현을 바꾸어 도함수를 기준으로 식을 정리하는 것도 가능하다. 2. Taylor series - Special cases (Quiz) odd function(기함수)은 원점대칭이고 even function(기함수)는 y축 대칭이다. 점근선이 존재하는 지점에서는 근사식을 구할 수 없다. 만약 그런 원함수에 대해 근사를 구하게 되면 approximation이 함수의 일부를 무시하거나 점..

Tistory

Deep Neural Network(3)

1. Parameters vs Hyperparameters What are hyperparameters? 최종적으로 parameter인 w,b를 결정하는데 영향을 주는 것들이다. learning rate 알파, iterations 횟수, hidden layer 개수 L, hidden unit 개수 n, activation function 종류 등 Applied deep learning is a very empirical process hyper parameter를 조정하면서 cost값이 작아지는 조건을 찾아나가는 것이다. 2. What does this have to do with the brain? Forward and backward propagation 교수님은 deep learning의 구조가 인..

Tistory

Quiz & Programming Assignment

1. Key Concepts on Deep Neural Netoworks (Quiz) 어려운 내용은 아닌데 다 맞히기가 어려워서 몇 번이고 시도했다... cache는 forward를 진행하는 과정에서 backward 계산을 편리하게 하기위해 저장하는 변수값이다. 이때 저장되는 Z는 미분계수를 구하는데 사용된다. parameter에는 W,b가 포함된다. activation function, number of layers 등은 hyper parameter에 속한다. vecotirzation을 통해 explict한 for-loop를 줄일 수 있지만 각 layer에 대한 계산을 수행하는데 있어서는 for-loop를 제외할 수 없다. Z,A를 각 layer에 대해 계산하는 알맞은 코드를 고른다. 결과적으로 Z[1..

Tistory

PCA algorithm

1. Steps of PCA 1) subtract the mean from the data and send it at zero to avoid numerical problems 2) divide by the standard deviation to make the data unit-free 3) compute the eigenvalues and eigen vectors of the data covariance matrix 4) can project any data point onto the principal subspace 2. PCA in high dimensions 3. Steps of PCA 대충 pass 하려고 했는데 결국 거의 다 풀어낸..퀴즈였다..ㅜㅜ PCA는 결국 고차원의 데이터를 낮은 차원..

Tistory

Deep Neural Network(1)

1. Deep L-layer Neural Network What is a deep neural network? logistic regression은 shallow하다고 표현된다. 이와 대비되는 deep neural network는 그 성능히 월등히 좋은 것으로 알려져있다. Deep neural network notation 위 network는 input layer를 제외한 네 개의 layer로 구성된 4 layer NN이다. 기호의 위첨자로 사용하는 기호 l 에는 layer의 숫자가 들어간다. n은 각 layer의 unit 수를 나타낸다. a는 각 layer의 activation을 나타낸다. a[l]은 l번째 layer의 z에 l번째 활성화함수 g를 적용한 결과다. a[0] 는 input feature인..

Tistory

Deep Neural Network(2)

1. Why Deep Representations? Intuition about deep representation CNN에서 이미지 분석 과정은 위와 같다. 작은 것들을(edge) 먼저 분석하고 이것으로부터 점점 큰 조각들을 합쳐 원래의 모습을 구성한다. speech recognition에도 적용 가능하다 low level의 speech sound phonemes words sentence, phrase Circuit theory and deep learning Informally: There are functions you can compute with a "small" L-layer deep neural network that shallower networks require exponentially..

Tistory

AI and Society(3)

1. Conclusion What you've learned What is AI? Building AI projects Building AI in your company AI and society 앞으로 공부를 더 해라! 2. Week 4 Quiz 현재 AI 기술의 한계 편향, 차별, adversarial attack에 취약, 설명하기 어려움 인공지능의 기술에 대해 지나치게 낙관/비관적이면 안된다. bias를 예방하는 방법 포괄적이고 덜 편향된 데이터 사용하기 bias를 평가하는 시스템 도입 기술적 해결 adversarial attacks yes대신 no로 인식하게 만들기 이미지를 미묘하게 바꾸고 개 대신 고양이로 인식하게 하기 스티커를 추가하여 원래 사물을 인식하지 못하게 만들기 각 지역별로 강점있는 ..

Tistory

PCA derivation(1) - 복습必

1. Vector spaces Group이라는 개념과 vector space에 대한 설명이 나와있는 pdf를 공부하도록 되어있다. 굉장히 불충분한 설명과 함께 다양한 기호들이 나열되어 있어서 무슨 뜻인지 하나도 이해가 되지 않는다. 아무래도 서칭을 통해 따로 공부할 필요가 있겠다... 2. Orthogonal complements 만약 n차원 벡터공간 V에 대하여 k차원 부분공간 W가 V에 속할 때, W의 orthogonal complement는 V에 속하는 (n-k)차원 부분공간이다. 그리고 W에 orthogonal하는 모든 V의 vector를 포함한다. 3. Problem setting and PCA objective 높은 차원에 있는 벡터를 낮은 차원의 벡터로 표현하는 것이 목표. 이때 최대한 re..

Tistory

PCA derivation(2) - 복습必

1. Finding the coordinates of the projected data determined the coordinates of the optimal projection with respect to the orthonormal basis that spans our principal subspace 2. Reformulation of the objective 3. Lagrange multipliers 4. Finding the basis vectors that span the principal subspace 출처: Coursera, Mathematics for Machine Learning: PCA, Imperial College London.

Tistory

AI and Society(1)

1. A realistic view of AI Goldilocks rule for AI Toop optimistic: Sentient / super-intelligent AI killer robots coming soon Too pessimistic: AI cannot do everything, so an AI winter is coming Just right: AI can't do everything, but will transform industries Limitations of AI Performance limitations Explainability is hard (but sometimes doable) Biased AI through biased data Adversarial attacks on..

Tistory

AI and Society(2)

1. Adverse uses of AI DeepFakes Synthesize video of people doing things they never did Undermining of democracy and privacy Oppressive surveillance Generating fake comments Spam vs. anti-spam and fraued vs. anti-fraud 2. AI and developing economies Developing economies 기술이 발전함에 따라 개발도상국들은 선진국이 이미 거쳐갔던 단계를 반복할 필요가 없다. 성장 단계에 있어서 일종의 '도약'이 가능한 것이다. How developing economies can build AI US and Chin..

Tistory

Shallow Neural Network(2)

1. Activation Functions 이제는 activation function으로 sigmoid를 사용하지 않는다. 거의 모든 경우에 대해서 tan h를 activation function으로 사용하는 것이 더 좋기 때문이다. tan h는 sigmoid와 달리 non-linear한 내용에도 적용될 수 있다. 단, output layer의 activation function으로 sigmoid를 사용하는 것이 tan h를 사용하는 것보다 편리한 경우가 예외로 존재한다. 이때는 y(label)이 0 또는 1로 구분되는 이진분류인 경우인데, y hat의 범위가 -1에서 1인 것보다 0에서 1로 나오는 것이 더 좋기 때문이다. 따라서 hidden layer의 activation function은 sigmo..

Tistory

Shallow Neural Network(3)

1. Gradient Descent for Neural Networks 두 개의 hidden layers가 존재하는 neural network에 대해 gradient descent의 parameters는 네 개이다. w1, b1, w2, b2. 이를 cost function의 매개변수로 넣고 이 값들을 최적화하여 cost의 값을 최소화하는 것이 최종 목표이다. 값을 업데이트 하는 과정은 cost function을 각 변수로 편미분하여 구한 미분계수를 빼는 방식으로 진행한다. 이 반복은 적절한 값이 찾아질 때까지 계속된다. Formulas for computing derivatives forward/back propagation 의 공식이 나열되어있다. forward propagation은 앞에서 다룬 내..

Tistory

Quiz & Programming Assignment

1. Shallow Neural Networks (Quiz) X는 각 column별로 하나의 training example인 matrix이다. tanh를 activation function으로 사용하면 그 범위가 -1부터 1까지이므로 데이터를 0을 중심으로 모이게한다. 따라서 학습을 보다 간단하게 만들어버려서 제대로 학습이 이루어지지 않는다. binary classification의 output layer activation function은 sigmoid가 적절하다. axis = 0을 기준으로 sum을 하면 행이 날아가고 열이 남는다.(행을 합쳐서 각 열별로 표시) 반대로 axis = 1을 기준으로 sum을 하면 열이 날아가고 행이 남는다.(열을 합쳐서 각 행별로 표시) weight와 bias를 0으로..

Tistory

Projections(1)

1. Projection onto 1D subspaces 벡터 u의 기저벡터는 b이다.(다른 말로 표현하면 벡터 b로 표현할 수 있는 subspace 내에 u가 존재한다) 따라서 어떤 scalar lamda를 기저벡터 b에 곱해주면 파이 x u(x)가 되는 것이다. 이때 벡터 u 위의 벡터 x와 가장 가까운 지점을 구하면 x에서 u에 대해 수선을 내려야 한다. 수선의 정의는 직교(orthogonal)한다는 것이다. 따라서 벡터 b와 수선을 표현하는 벡터의 내적은 0이 된다. 위 정의를 이용하여 식을 정리해보면 람다에 대해 내적과 norm으로 정의할 수 있게 된다. 결과적으로 (b x b.T) / norm(b)^2 은 projection matrix가 된다. 2. Example: projection ont..

Tistory

Projections(2)

1. Full derivation of the projection 앞의 강의에서 다룬 투영행렬을 구하는 과정이 증명되어있다. 사실 강의에서 이미 그 과정을 보여주었기 때문에 특별한 내용은 없었다. 2. Example: projection onto a 2D subspace 3D 공간에 속하는 벡터 x를 2D의 부분공간에 대해 투영한 벡터를 구하는 예시다. 결과적으로 투영벡터도 부분공간 u의 기저벡터 b1,b2의 linear combination으로 표현되는 것을 확인할 수 있다. 3. Project 3D data onto a 2D subspace 3차원 공간의 벡터 x를 2차원 평면으로 표현되는 부분공간에 대해 내린 투영벡터를 구하는 문제(3개) 강의에서 설명된 공식을 잘 이용해야 한다. B.T와 B를 곱..

Tistory

Shallow Neural Network(1)

1. Neural Networks Overview What is a Neural Network? 앞선 강의들에서 배운 내용을 정리한 것이다. 입력 x를 가중치 w와 곱하고 편향 b를 더한 것을 z로 정의한다. 이 z에 시그모이드 함수를 적용하면 output이 된다. 만약 layer가 깊어지면 z가 새로운 입력이 되어 새로운 가중치 및 편향과 계산을 하게 된다. 변수의 우측 상단에 적힌 [ ] 안의 숫자는 몇 번째 layer에 속하는지를 나타내고 있다. 빨간색 화살표는 back-propagation을 뜻한다. 2. Neural Network Representation hidden layer: 어떤식으로 학습이 이루어지는지 우리가 직접 볼 수 없는 layer다. logistic regression에서는 a가..

Tistory

[프로그래머스] [3차] 압축(Python)

문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/17684?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 소스 코드 def solution(msg): # {A:1,B:2, ... , Z:26} 딕셔너리 생성 alphas = {chr(x):x-64 for x in range(65,91)} results = [] tmp = '' # 쌓아갈 문자열 cur = 27 # 딕셔너리 번호 for i in range(len(msg)): tmp += msg[i] # 확인하는 ..

Tistory

Neural Networks

1. Simple neural networks neural network를 이루는 작은 원 하나를 neuron이라고 한다. 그 구조는 활성화 함수인 시그모이드에 가중치 w와 입력 a를 곱하고 b를 더한 값을 집어넣는 것이다. 만약 입력이 여러개이고 이것이 여러개로 구성된 다음층으로 전달될 때는 위와 같은 구조를 가진다. 1번 layer에 속하는 neuron들이 0번 layer에 속하는 neuron들과 모두 연결되어있다. 그리고 그 연결은 위에서 설명한 가중치와의 곱 + 편향으로 구성된다. 이를 일반화하면 단순한 숫자(scalar)의 곱이 아닌 벡터의 곱으로 이해할 수 있게 된다. 가중치벡터 W와 입력벡터 a를 곱하고 여기에 편향벡터 b를 더한 결과를 시그모이드 함수에 집어넣는 것이다. 다양한 일들을 수행..

Tistory

2022(하반기) 삼성전자 DX SCSA 전형 서류 합격후기

2022년 10월 5일 수요일 삼성전자 DX SCSA 서류 합격 서류 제출은 지난 9월 14일 마감이었고, 한 달이 조금 지나지 않아서 서류 결과가 발표되었다. 사실 상반기에 도전해보면서 여기에 목을 매고 있는게 그닥 좋은 것도 아니라는걸 느꼈고, 이후 응시하는 GSAT에 필요한 역량도 많이 부족한 것 같지는 않아서 그냥 아예 까먹고 있었다. 오늘도 친구가 말해주지 않았으면 아예 모르고 지나갈뻔했다 ㅋㅋ.. 나는 삼성전자 DX에 SCSA 전형으로 지원했다. 컴퓨터공학 비전공자를 뽑아서 6개월 간 교육을 통해 성장시키고 3급 신입으로 채용 연계하는 전형이다. (내용만 들어도 경쟁률 엄청나게 치열할게 뻔한 그런 전형이다. 실제로 지난 상반기에 이 전형을 지원하며 알게된 사람들은 모두 떨어졌다) 개발에 관심을..

Tistory

Building AI in Your Company(2)

1. AI Transformation Playbook (Part 1) AI Transformation Playbook 1) Execute pilot projects to gain momentum 2) Build an in-house AI team 3) Provide broad AI training 4) Develop an AI strategy 5) De..

Tistory

Building AI in Your Company(3)

1. Survey of major AI application areas (optional) Computer Vision Image classification/Object recognition Face recognintion Object detection Image segmentation Tracking Natural Language Processing..

Tistory

Chain rule intro.

1. Multivariate chain rule t에 관한 n개의 함수 x로 구성된 함수 f를 t에 대해 미분하는 것은 chain rule로 표현 가능하다. 이때 편미분벡터와 미분벡터를 내적하는 꼴이 된다. 2. More multivariate chain rul..

Tistory

[BOJ] 17626 : Four Squares [DP](Python)

문제 링크 https://www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로..

Tistory

Building AI in Your Company(1)

1. Case study: Smart speaker Steps to process the command : AI pipeline 1) Trigger word/wakeword detection Audio : "Hey device" 2) Speech recognition Audio : "tell me a joke" 3) Intent recognition..

Tistory

Python and Vectorization(2)

1. Broadcasting in python Boradcasting example 세 개의 행 중에서 Carb가 차지하는 비중을 for-loop 없이 해결하는 코드를 작성해보자. 각 열의 값들을 모두 더하여 구한 값으로 각 원소들을 나눠준 뒤 100을..

Tistory

Programming Assignments

1. Nerual Network Basics(Quiz) y hat은 input x가 주어졌을 때 y = 1일 확률이다. logistic loss는 y와 y hat 값이 주어지면 공식을 통해 그 값을 구할 수 있다. boradcasting은 두 행렬의 사이즈 중 일치하는..

Tistory

Python and Vectorization(1)

1. Vectorization gradient descent를 통해 값을 update하는 과정의 속도를 빠르게 만들어주는 방식이 vectorization이다. 단순히 python의 for loop를 사용하는 것이 아니라 numpy의 dot를 통해 vector인 w와 x..

Tistory

Logistic Regression as a Neural Network(2)

1. More Derivative Examples 미분은 x축의 방향으로 아주 조금 움직였을 때 y축에서의 변화가 어떻게 될지 보여준다. 위 예시에서는 a의 값이 0.001(아주 작은 값)만큼 움직이면 f(a)는 얼만큼 움직이게 되는지..

Tistory

네이버 부스트캠프 AI Tech 4기 2차 테스트 응시 후기(비전공자)

2022.08.20 작성 1. 시험 난이도 - 평이 1차 테스트와 달리 2차 테스트에서는 8문항이 출제되었다. 그리고 1차 테스트에 비해서 난이도가 낮았던 것 같다. 코딩 테스트 경험이 적어서 일반적인 경우에 포함..

Tistory

네이버 부스트캠프 AI Tech 4기 최종 합격 후기!!(비전공자)

2022.08.26 작성 2022.08.26(토) 부스트캠프 AI Tech 4기 최종 합격 금일 오후 2시 합격 메일이 도착했다. 처음에는 메일 확인이 안돼서 설마 불합격인가 싶어 쫄렸는데 다행히도 합격이었다. 휴.. 드디어 제대로..

Tistory

프로그래머스 인공지능 데브코스 4기 코딩 테스트 응시 후기(비전공자)

2022.08.27 작성 금일 오후 2시부터 4시 50분까지 코딩 테스트에 응시했다. 이번 기수 일정은 다음과 같다. 자세한 일정과 자격 조건, 수업 내용 등은 아래 링크에서 직접 확인 가능하다. https://school.prog..

Tistory

프로그래머스 인공지능 데브코스 4기 최종 합격 후기!!(비전공자)

2022.09.01 작성 2022.09.01(토) 프로그래머스 인공지능 데브코스 4기 합격 발표 금일 오후 2시 메일로 최종 합격이 안내되었다. 솔직히 모집 인원도 많지 않고(30명) 해놓은게 없어서 자신이 없었는데 어..

Tistory

[SSAFY 8기] 싸피 8기 불합격 후기(비전공자)

2022.06.29 작성 6/29(수) 오후 2시, 문자로 Interview 결과를 확인하라는 안내를 받았다. 사실 면접 후기에서 남겼던 것처럼 싸피에서 공부할 내용과 내가 생각하는 방향성이 너무 달라서 좋은 결과가 있을 거..

Tistory

네이버 부스트캠프 AI Tech 4기 지원(비전공자)

2022.07.27 작성 2022.07.26(화) 네이버 부스트캠프 AI Tech 4기에 kdt 전형으로 지원 상반기의 취업 준비에서 대실패를 거둔 이후, 어떤 교육기관에서 프로그래밍을 배우면 좋을지 많은 고민이 있었다. 특히..

Tistory

네이버 부스트캠프 AI Tech 4기 1차 테스트 응시 후기(BAT)(비전공자)

2022.08.04 작성 2022.08.04(목) 부스트캠프 AI Tech 4기 1차 테스트 오늘은 내 생일이다. 동시에 부스트캠프 1차 테스트를 치른 날이기도 하고. 뭐 생일이야 매년 찾아오지만, 테스트를 내년에 또 보고 싶..

1 2 3 4