전체 글 153

신경망의 기본 구성요소(2)/ 활성화함수- 시그모이드

밑바닥부터 시작하는 딥러닝을 교재로 한 유튜브 강좌와 파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. ▶ 활성화함수 활성화 함수는 신호가 전달되고 전달된 값이 일정 임계값을 넘길 때 다음 뉴런을 활성화 시킬 수 있도록 하는 함수이기 때문에 "활성화"함수로 불린다. 활성화 함수는 데이터가 학습이 가능하게(= 미분이 가능하게) 만들어주는 함수로 여러가지 함수가 존재한다. 해당 포스팅과 다음 포스팅들에선 여러 활성화 함수 중 sigmoid, hyperbolic tangent, Recified Linear unit(RELU), softmax함수에 대해 알아보고자한다. 이번 포스팅에선 sigmoid 함수에 대해 알아보자. ▶ 시그모이드 함수 시그모이드는 신경망 분야 초창기 부터 사용한 활성화 함수로 0..

신경망의 기본 구성요소 (1)/ 퍼셉트론과 논리게이트, 파이토치 구현

밑바닥부터 시작하는 딥러닝을 교재로 한 유튜브 강좌와 파이토치로 배우는 자연어처리 책을 참고하여 작성하였습니다. ▶ 퍼셉트론이란? 뉴런을 본떠 만든 가장 간단한 신경망으로 구성요소로 입력x, 출력y, 파라미터로는 가중치w와 절편b가 있다. 신경망의 기초가 되는 부분이기 때문에 해당 개념에 대해 짚고 넘어갈 필요가있다. 가중치와 절편은 데이터를 학습하면서 계속 업데이트 되는 파라미터들로, 가중치는 해당 입력값이 얼마나 중요한지를 나타내고 절편(=편향)은 임계값 역할을 하여 학습데이터와 가중치를 계산한 값이 해당 절편을 넘어야 하는 값이 된다. 따라서 편향이 높으면 높을 수록 입력값이 True가 되는 장벽이 더 높아진다고 할 수 있다. 아래 그림에서 편향은 -theta로 표현할 수 있다. 수학적으로 퍼셉트론..

[백준 | 파이썬3] 1753. 최단경로- 다익스트라/ 런타임에러 input() vs stdin.readline

https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net > 다익스트라 알고리즘 활용 해당 문제는 알고리즘 구현보단 데이터를 입력하는 부분에서 애를 먹었다. 처음에는 모든 데이터를 input()으로 받았더니 계속 런타임 에러가 났다. 이럴때는 sys.stdin.readline을 사용해줘야한다. 참고한 글에 따르면 input()과 stdin는 내가 어떤 input을 입력받느냐에 따라 소요시간이 달라질 수 있다고 한다. 그 이유는..

최소신장트리, 크루스칼 알고리즘

나동빈님의 '이것이 코딩테스트다 with 파이썬'저서와 유튜브 강의를 참고하며 작성하였습니다. 코드 출처: https://github.com/ndb796/python-for-coding-test ▶ 신장트리란? 그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미한다. 모든 노드는 연결하기위해 모든 간선을 사용하지 않아도 된다는 점에서 모든 노드들이 연결되어있지만 최소한의 비용으로 구성되는 신장 트리를 찾아야할 때 효율적으로 사용될 수 있다. > 시간복잡도: 해당 알고리즘에서 가장 많은 시간을 요하는 곳이 간선의 정렬을 수행하는 부분으로 간선 개수가 E개 일때 O(ElogE)의 시간복잡도를 가진다. ▶ 동작과정 step 1. 간선 비용을 오름차순으로 정렬하여 최소 비용의 간선부터 ..

[백준 | 파이썬3] 9184 신나는 함수실행- 동적계획법

https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net > 동적계획법 이미 계산된 적이 있는 값들은 dp리스트에서 빼와 사용하고 계산된 적이 없는 값들만 재귀함수를 호출하여 계산하도록 한다. a 또는 b또는 c가 0이하이면 바로 1을 돌려주고 20초과면 dp에서 20,20,20위치에 있는 값을 가져오면 되기 때문에 funny함수의 매개변수를 20,20,20으로 두고 실행한다. 실제로 계산을 통해 dp값을 구해놓아야 하는 범위는 1에서 20 사이의 값들 이..

텍스트를 수치화시키는 방식 4가지

텍스트를 머신러닝 알고리즘에 사용하기 위해선 수치로 변환하는 과정이 필요하다. 수치로 나타내는 방법은 여러가지가 있는데 해당 포스팅에선 4가지 표현을 소개하고자 한다. ▶ 원-핫 표현 원핫 표현은 문장을 단어 단위로 나눈 토큰들을 어휘 사전으로 등록하고, 문장에 등장하는 단어는 1로 문장에 등장하지 않는 단어는 0으로 설정하는 방식이다. 다음과 같은 corpus가 있다고 해보자. 해당 코퍼스에서 만들어지는 어휘사전의 개수는 time, flies, like, an, a, arrow, banana, fruite로 8개이다. 여기서 'Time flies like' 코퍼스를 원핫벡터로 표현하면 다음과 같다. time flies like an a arrow banana fruite 1 0 0 0 0 0 0 0 0..

[백준 | 파이썬3] 1920: 수찾기- 이진탐색

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net > 이진탐색 활용 #1. 런타임 에러 처음에는 target number가 있는 리스트들에 대한 반복문을 돌리면서 타겟이 A리스트에 있으면 if target in A: 1을 출력하고 아니면 0을 출력하도록 했다. 하지만 역시 런타임 에러가 났다. 1초당 1억번의 연산을 할 수 있다고 하면 n과 m에 최대 100,000개의 정수가 들어가기 때문에 최악의..

리뷰의 의미적 토픽분류를 적용한 감성분석 모델

논문명: 리뷰의 의미적 토픽 분류를 적용한 감성분석 모델 저자: 임명진, 김판구, 신주현 저널: 스마트미디어 저널 발간일: 2020년 06월 드라마 리뷰 데이터를 대상으로 "토픽 별" 감성분석을 수행한 논문이다. ▶ 분석 프로세스 및 결과 분석 프로세스와 과정 별 결과는 다음과 같다. 1. LDA (Latent Dirichlet Allocation) 리뷰데이터들을 대상으로 LDA토픽모델링을 수행한다. 문서 내 주제 분포 분석 및 주제 내 단어 분포를 분류하기 위해 LDA를 사용했다. LDA를 사용해 토픽간 관련성을 최소로하는 토픽을 총 3가지 도출하였다. 2. Semantic Topic Reclassification 해당 논문에서 눈 여겨 보았던 부분이다. LDA를 통해 데이터를 토픽 별로 분류하였는데,..

직선, 평면 벡터방정식

▶ 벡터방정식이란 함수에서 x에 값을 대입했을 때 도출되는 좌표값을 바로 산출할 수 있도록 하는 방정식이다. 예를들어, y= mx라는 직선 방정식이 있다고해보자. 이때 x를 1이라고 하면 y는 m, 즉 (1,m)의 좌표값을 가지게 된다. 해당 함수의 직선위에 존재하는 좌표값들은 (1,m)에 스칼라 배를 해준 좌표들을 모아놓은 값일 것이다. 해당 함수의 벡터 방정식은 다음과 같이 나타낼 수 있다. v= (1,m) (x,y)= tv 벡터가 (1,m)일 때 해당 벡터에 스칼라 배만 해주면 직선위에 존재하는 좌표값이 바로 나올 것이다. 그럼 (3,5m)좌표가 해당 직선에 포함되는 좌표인지 벡터 방정식을 통해 알아보자. x좌표가 3이 나오기 위해서 t는 3이되어야한다. 3v= 3(1,m)= (3,3m)이 벡터방정..

서로소 집합 알고리즘(3)/ 사이클 판별

나동빈님의 '이것이 코딩테스트다 with 파이썬'저서와 유튜브 강의를 참고하며 작성하였습니다. 코드 출처: https://github.com/ndb796/python-for-coding-test ▶ 사이클 판별 서로소 집합 알고리즘을 무방향 그래프 내에서 사이클이 발생하는지(서로 연결되어 순환할 수 있는 구조인지) 판별하는데 사용할 수 있다. ▶ 작동 과정 step 1. 각 간선을 확인하며 루트노드를 보았을 때 루트 노드가 같다면 사이클이 발생한 것이고, 같지 않으면 두 노드에 대한 union연산을 수행한다. step 2. 모든 간선에 대해 step1을 반복한다. ▷ 예시 아래와 같은 그래프가 있다고 해보자. 1,2,3 노드에서 사이클이 발생하고 있으므로 사이클이 존재하는 그래프이다. 작동 과정을 경로 ..