전체 글 (43) 썸네일형 리스트형 (1) 머신러닝이란? 인공지능 - 이론 카테고리에서는 머신러닝 딥러닝에 대한 기초적 이론들을 다루고 있습니다. 이번 글에서는 머신러닝에 대한 정의에 대해 정리하였습니다. 1. 머신러닝이란? - 데이터를 사용하여 자동으로 성능을 향상하는 알고리즘을 연구하는 학문입니다. 쉽게 설명하자면, 사과를 분류하는 문제가 있다고 생각해봅시다. 원시적인 프로그래밍 방법을 사용해 인간이 사과를 분류한다고 한다면 굉장히 복잡한 계산들을 통해 분류를 해낼 수 있을 것입니다. 만약 분류해야 하는 과일이 100개가 넘는다고 하면 알고리즘을 개발해야 하는 개발자는 매일 밤 야근에 시달릴 것입니다. (그렇게 해도 성공적인 분류 작업을 해낼 수 있을지는... ) 하지만 머신러닝은, 이 문제를 보다 유동적으로 해결해줍니다. 사과 이미지를 5000개 준비하고.. 프로그래머스 단어 변환 (파이썬, DFS) def possible_word(word, words): result = [] for i in words: cnt = 0 if len(word) == len(i): for a, b in zip(word, i): if a != b: cnt += 1 if cnt == 1: result.append(i) return result def solution(begin, target, words): answer = 0 possible = [] def dfs(depth, word, remaining): remain = remaining.copy() if depth >= len(words): return elif word == target: possible.append(depth) else: pos = possible_.. 뉴턴 방법, 랩슨법 (newton's method) 뉴턴 메소드는 f(x)=0 의 근삿값을 찾는 방법이다. 위 사진을 예로 들면 f(x) = x^2 이고. f'(x) = 2x 이다. x = a 에서의 접선의 방정식은 y = 2a(x-a) + a^2 이다. 가장 처음에 임의의 점 하나를 잡는다. x = 2 에서의 점을 잡겠다. 그러면 접선의 방정식은 y = 4x - 4 가 된다. 여기서 x 절편을 구하면 x = 1 이 된다. 그럼 다시 x = 1 에서의 점을 잡고, 접선의 방정식을 구한다. - y = 2x - 1. x 절편 = 0.5 x 절편이 0.5 가 나왔다. 그럼 또다시 x = 0.5 일때 접선의 방정식을 구하고 이를 반복한다. 이렇게 f(x) = 0 의 근삿값을 구하는것이 newton method 이다. 이 과정을 정리하면 접선의 방정식은 y = f.. Backpropagation (오차역전파) 개념 이해 시작하기에 앞서 본 글은 www.youtube.com/watch?v=573EZkzfnZ0에서 참고하였음을 밝힙니다.이 글은 편미분을 알고 있다는 가정하에 설명된 글입니다. Backpropagation (오차 역전파)는 인공신경망에서 노드들의 가중치를 update 하기 위해 사용하는 알고리즘이다. 진행방향이 왼쪽에서 오른쪽 즉, input layer에서 output layer까지 도달하는 과정을 forward propagation (순전파)라고 한다. 그와 반대로 오른쪽에서 왼쪽, output layer에서 input layer로 오는 과정을 backpropagation 혹은 backward propagation (역전파)라고 한다. 여기서 오차 역전파는 당연히 output layer에서 input lay.. 프로그래머스 - 다리를 지나가는 트럭 (파이썬) 123456789101112131415161718192021def solution(bridge_length, weight, truck_weights): stack = [] success = [] current_weight = 0 cnt = 0 while True: if success and not stack and not current_weight: break for i in range(len([j for j in stack])): stack[i][1] += 1 for i in [j for j in stack if j[1] > bridge_length]: current_weight -= i[0] success.append(i[0]) stack.remove(i) try: if weight - current.. 프로그래머스 체육복 - 파이썬 (탐욕법) 1234567891011121314151617181920def solution(n, lost, reserve): answer = n for i in [j for j in lost[::-1]]: if i in reserve: reserve.remove(i) lost.remove(i) continue elif i - 1 not in reserve and i + 1 not in reserve and i not in reserve: continue elif i - 1 in reserve or i + 1 in reserve or i in reserve: if i - 1 in reserve and i + 1 in reserve: if i - 1 in lost and i + 1 in lost: continue eli.. 프로그래머스 크레인 인형뽑기 게임 - 2019 카카오 개발자 겨울 인턴십 ( 파이썬 ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 def solution(board, moves): answer = 0 last_basket_num = -1 basket = [-1] for i in moves: layer = 0 if board[-1][i-1] == 0: continue for j in range(len(board)): if board[j][i - 1] != 0: layer = j break if board[layer][i - 1] == last_basket_num: del basket[-1] answer += 2 else: basket.append(board[layer][i-1]) last_basket_num = basket[-1] board[layer][.. 프로그래머스 문자열 압축 - 2020 KAKAO BLIND RECRUITMENT (파이썬) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def slice_str(s, n): return [s[i:i+n] for i in range(0, len(s), n)] def solution(s): if len(s) == 1: return 1 answer_list = [] for i in range(1, len(s)//2 + 1): sliced_str = slice_str(s, i) count = 1 result_str = "" for j in range(len(sliced_str)): if j 이전 1 2 3 4 5 6 다음