본문 바로가기

공부 정리28

LIS길이를 이분탐색으로 구해보자(python) 가장 긴 증가하는 부분수열(LIS)의 길이를 이분탐색을 이용해 구해보자 먼저 가장 긴 증가하는 부분 수열이 뭔지 이해해보자 수열: 숫자들의 나열 ex) [5,3,8,2] 부분수열: 수열안에서 몇몇 숫자들을 골라서 만든 새로운 수열 ex) [5,8,3,2] => [5,8,2] 따라서 수열 [10, 20, 10, 30, 20, 50]이 있을때 따라서 가장 긴 증가하는 부분 수열은 [10, 20, 10, 30, 20, 50]이고 길이는 4이다 이분탐색을 이용한 풀이 주어진 수열의 각 원소를 순회하면서 이분탐색을 적용해나간다 따라서 시간복잡도는 O(nlogn) 이된다 세부적인 이진탐색 과정은 아래와 같다 현재 원소를 이진 탐색을 통해 LIS 배열에 삽입할 위치를 찾는다 (LIS배열은 항상 정렬된 상태를 유지한다.. 2023. 6. 6.
Policy Gradient Methods의 구현 심층 강화학습 인 액션의 chater4내용을 나름대로 이해한내용을 바탕으로 정리해보았습니다부정확한 내용이 있다면 피드백 부탁드립니다정책망이 뭐에요?정책망은 상태를 받고 모든 가능한 동작들의 확률분포를 돌려주는 함수 최종적으로 동작을 선택하는 방식은 다음과 같다정책망이 가능한 동작 4가지에대해 확률분포를 예측한다 (각 동작의 확률을 모두 더하면 1이된다)만약 2번 동작의 보상이 가장 클것이라고 예측한다면 2번의 확률이 가장높다 이상태에서 확률분포에 따라 모델은 동작을 선택을 하게된다2번 동작이 뽑힐 확률이 가장 높겠지만 다른 동작이 뽑힐수도있다  게임소개CartPole강화학습에서 많이 사용되는 클래식한 환경중 하나이다 막대기와 수래로 구성되어있다목표: 막대가 넘어지지않고 수레를 제어하여 막대를 가능한 오랫.. 2023. 5. 28.
목표망(target network)이 있는 Q학습 예제를 실행하기위해 필요한 코드(Gridworld, GridBoard등등)및 전체 코드는 책 깃허브를 참고하자https://github.com/DeepReinforcementLearning/DeepReinforcementLearningInAction/tree/master/Chapter%203 목표망이 있는 Q학습목표망과 경험재현이 추가된 딥Q학습의 관계도를 그려보았다강화학습에서 경험재현에 관한 내용은 이전 포스팅에 적어놓았다 https://doingcomputer.tistory.com/22Q 신경망과, 목표 Q신경망 총 두가지 모델을 사용하게되는데둘의 용도는 각각 X값예측과  y값 예측으로 다르다역전파는 오로지 Q신경망에서만 일어나며목표 Q신경망은 일정 학습 주기마다 Q신경망으로부터 가중치를 업데이트 받.. 2023. 3. 18.
백준 랜선자르기(1654번) 파이썬 풀이 이진탐색 카테고리에 속한 문제 정답코드K, N=map(int,input().split())cable_list=[]for _ in range(K): cable_list.append(int(input()))def how_many_cable(cable_size, cable_list): cable_num=0 for cable in cable_list: cable_num+=(cable//cable_size) return cable_numdef binary_search(K, cable_list, target): low=1 high=max(cable_list) while low=target) & (cn2=target: low=middle+1.. 2023. 3. 17.
파국적 망각 방지: 경험재현 예제를 실행하기위해 필요한 코드(Gridworld, GridBoard등등)는 책 깃허브를 참고하자https://github.com/DeepReinforcementLearning/DeepReinforcementLearningInAction/tree/master/Chapter%203파국적 망각파국적 망각은 서로 아주 비슷하지만그 결과는 상당히 다른 두 게임 상태에 대해서 학습이 제대로 일어나지않는것을 말한다예제를 보면 게임1과 게임2는 비슷하기때문에 이전에 배운 가중치들이 새 가중치로 대체된다 (망각) 경험 재현기존 학습방법이 action을 취하고 그후 바로 학습(역전파)이 진행되는 온라인(실시간) 학습이었다면기본적으로 경험재현은 온라인 학습에 배치 훈련 방식을 도입하는것이다 경험목록과 배치1. 상태 s에서.. 2023. 3. 13.
백준 수찾기(1920번) 파이썬 풀이 전체 코드# 수 찾기N=int(input())A=list(map(int,input().split()))M=int(input())B=list(map(int,input().split()))def is_there(min_idx, max_idx, array, num): middle_idx=(min_idx+max_idx)//2 if (array[middle_idx]==num or array[max_idx]==num) or array[min_idx]==num: print(1) return if max_idx-min_idx==1: print(0) return elif array[middle_idx]num: return.. 2023. 2. 22.
Pooling 레이어의 이해 풀링을 왜하는가1. 풀링은 입력이 작게 이동해도 근사적으로 불변이 되게 하는데 도움을 준다2. 데이터 차원의 감소pooling의 커널사이즈를 2*2, stride 2로 설정했을때 최종적인 데이터 크기를 1/4로 줄일수있다일정영역의 강한 피쳐만을 남길수있으며 신경망의 계산이 빨라진다 풀링의  기본설정pooling시 대부분 maxpool을 이용한다stride는 커널사이즈와 동일하게 설정하는것이 default값이다 pooling과 convolution레이어의 차이점학습해야할 가중치가없다풀링후 채널수가 변하지 않는다 pooling의 문제maxpooling으로 일정 영역의 강한 feature만을 다음 레이어로 넘기면 처음에는 적은 계산량으로 좋은 성능을 유지할 수 있을지 몰라도 깊은 레이어로 갈수록 정보유실이 커.. 2023. 2. 21.
패딩(padding) 사용하는 이유 패딩을 이용해 입력데이터를 특정값으로 감쌀수있다 주로 0을 이용한다고 한다패딩을 사용하는 이유는 세가지가 있다 첫번째는 출력크기의 감소를 막기위해서이다 예를들어 (4,4) 입력데이터에 (3,3) 필터를 적용하면 출력은 (2,2)가 되어 입력보다 2만큼 줄어든다이는 합성곱 연산을 몇번이나 되풀이하는 심층 신경망에서는 문제가 될 수 있다 위 그림과 같이 패딩의 폭을 1로 설정하니 (4,4)입력에 대한 출력이 같은 크기인 (4,4)로 유지되어 입력 데이터의 공간적 크기를 고정한 채로 다음 계층에 전달할 수 있다 두번째는외각을 0값으로 둘러싸는 특징으로부터 인공 신경망이 이미지의 외각을 인식하는 학습효과가 있다는 것이다 세번째는가장자리로 갈수록 연산에 이용되는 횟수가 떨어지는 문제점을 어느정도 해결해준다는것이다.. 2023. 2. 21.
합성곱 연산(Convolution operation) 방법 입력값이 커널과의 연산과정을 거쳐 출력값이 된다 커널은 필터라고도 불린다n*m크기의 행렬로 n*m크기의 겹쳐지는 부분의 원소값을 곱한뒤 모두 더한값을 출력으로 갖는다input_=np.array([1,2,3,2,1,0,3,0,1])kernel=np.array([1,0,1,1,0,1,0,1,0])sum(input_*kernel)이미지의 가장 왼쪽 위부터 가장 오른쪽 순차적으로 위과정을 반복한후 마지막으로 편향(bias)를 더해 최종적인 출력(feature map)을 만든다또한 위의 예제에서는 커널의 이동범위가 한칸이었지만 이또한 사용자가 정할수있으며 이러한 이동범위를 stride라고 한다 RGB 3채널의 이미지 한장에서 최종적인 feature map을 얻는 과정은 다음과 같다(보통 rgb값을 permute를.. 2023. 2. 21.