분류 전체보기 199

[하드웨어] 조립PC 구매하기

조립PC? 브랜드 PC(삼성, LG 등)를 사는 이유도 분명히 있을 것입니다. 컴퓨터를 잘 모르고, 브랜드를 믿으니까. A/S가 보장되니까. 하지만 조금만 알아보고 동일한 예산으로 조립PC를 구매한다면, 대부분의 경우 월등히 좋은 성능으로 부품을 구성할 수 있습니다. 여기서는 조립PC를 구매할 때 봐야할 것들을 공부하며 자연스럽게 컴퓨터 구조에 대한 전반적인 지식을 공부해보고자 합니다. http://shop.danawa.com/virtualestimate/?controller=estimateMain&methods=index&marketPlaceSeq=16&logger_kw=esti_shop_top PC견적 : 샵다나와 나만의 PC를 구성하고 견적비교, 조립까지 한번에 구매하세요. shop.danawa.c..

💻/CS 2020.09.08

[파이썬] 단축키 정리

https://kgu0724.tistory.com/95 Pycharm 단축키 정리 (펌) Editing Ctrl + Space : Basic code completion (the name of any class,method or variable) Ctrl + Shift + Space : Smart code completion (filters the list of methodsand variables by expected type) Ctrl.. kgu0724.tistory.com Ctrl + Alt + T : 다음으로 코드 감싸기… (if..else, try..catch, for,synchronized, etc.) Ctrl + W : 가장 안쪽의 괄호부터 선택(점점 확장 된다.) Ctrl + Alt + I..

[모두를 위한 딥러닝] 합성곱 신경망(CNN)

고양이의 인식 반응 인간은 인공신경망을 만들 때, 뇌를 구성하는 뉴런과 그것이 연결된 구조를 참고했다. CNN 역시, 뇌의 실제 작동방식에 대해 영감을 받아 만들어진 신경망이다. 신경과학자 Hubel과 Wiesel은 한 실험에서 고양이가 화면을 바라볼 때의 뉴런의 반응을 관찰했다. 그 결과, 화면의 어느 곳이 바뀌느냐에 따라 활성화되는 뉴런이 다른 것을 알 수 있었다. 여기서 영감을 얻어 화면에 구역별로 뉴런이 대응되는 형태의 신경망을 생각해냈고, 이것이 CNN이다. 컨벌루션 레이어 5×5 이미지가 주어졌다. 우리는 이것을 '필터'를 낀채, 3×3씩 볼 것이다. 이미지에서 가장 첫 위치에 필터를 놓았다. 필터에는 이미지를 어떻게 볼 것인지 어떤 '가중치'가 적용되어 있고 이것을 토대로 이미지에서 하나의 ..

💻/ML 2020.08.23

[모두를 위한 딥러닝] 활성함수, 초기화, 정규화

활성함수 우리는 SIGMOID 함수를 로지스틱 회귀에서 처음 배웠고, 0에서 1사이의 값으로 데이터를 필터링 해준다는 정도로 알고 있다. 그리고 이 함수는 인간으로 따지면, 뉴런에서 자극을 해석하여 다른 뉴런으로 신호를 만들어 보내는 역치와 비슷한 역할을 한다. 이것을 인공신경망에서는 뉴런을 활성화시켜준다는 뜻으로 '활성함수'라고 부르게 된다. 활성함수에는 SIGMOID만 있는 것이 아니다. 사실 SIGMOID는 치명적인 약점을 가지고 있기 때문에 잘 사용하지 않는다. SIGMOID함수의 출력은 항상 1보다 작기 때문에, SIGMOID함수를 통과한 값들은 서로 곱할수록 점점 줄어들 수 밖에 없다. 비슷한 이유로 우리가 신경망을 학습시키는 방법 '오차역전파'는 뒤로 갈 수록 점점 그 값이 희미해진다. 처음..

💻/ML 2020.08.17

[모두를 위한 딥러닝] 인공신경망, 오차역전파

인간의 지능 인공지능은 말 그대로, 사람이 만든 '지능(Intelligence)'이다. 인간의 입장에서 지능을 개발하기 위해서 인간의 '뇌'의 매커니즘이나 구조를 참고하는 것은 합리적이라고 할 수 있다. 뇌는 여러 뉴런들이 서로서로 그물처럼 연결되어 있는 신경망(Neural Network)의 구조를 가지고 있다. 바로 뉴런의 작동원리를 알아보자. 먼저, 나무의 가지처럼 되어 있는 수상돌기(dendrite)를 통해 자극을 받아들인다. 하지만 이 자극이 너무 작다면, 뉴런에는 아무 일도 일어나지 않는다. 따라서 뉴런에서 신호를 발생시키기 위한 최소한의 자극, 즉 '역치'이상의 자극이 가해져야 한다. 만약 충분한 자극으로 전기신호가 발생했다면, 이는 계속해서 전달되어(axon) 나간다. 이 전기신호가 말단부(..

💻/ML 2020.08.11

[모두를 위한 딥러닝] 학습계수, 데이터 표준화, 과적합

# 학습계수(하강간격)을 설정한다. learning_rate = 0.1 # 해당 지점의 기울기를 계산한다. gradient = tf.reduce_mean((W * X - Y) * X) # 기울기에 하강간격을 곱한 값을 W에 빼줘서 하강한다. descent = W - learning_rate * gradient # 해당 텐서에 업데이트 해준다. update = W.assign(descent) # tf.GradientDescentOptimizer(learning_rate=0.01) 학습계수 이전에 "[3] 텐서플로우 기초, 선형회귀" 에서 '하강 간격을 조정하기 위한 상수' 쯤으로 언급하고 넘어갔었던 개념이다. 위의 과정은 텐서플로우에 구현되어 있는 예쁜함수 GradientDescentOptimizer()의..

💻/ML 2020.08.04

[모두를 위한 딥러닝] 다중 분류, 소프트맥스 회귀

다중 분류 지난 포스팅에서는 0 / 1로 이루어진 데이터를 학습하고 결과를 도출(분류)하는 로지스틱 회귀에 대해서 다뤄보았다. 하지만 우리가 사는 세상은 두 가지 항목만 가지고 분류할 수 없는 것들이 너무나도 많다. 그렇다면 데이터를 여러가지로 구분해내는 다중분류(Multinomial Classification)는 어떻게 구현해낼 수 있을까? 왼쪽 데이터를 보고 세 개를 나누는 것은 사람에게는 일도 아니지만, 컴퓨터는 직관적이지 못하다. 먼저 배운 로지스틱 분류를 활용해보자. 이 문제를 A(빨간색)인 것과 아닌것, B(초록색)인 것과 아닌것, C(파란색)인 것과 아닌 것을 구분하는 세개의 작은 문제로 쪼개는 것이다. import tensorflow as tf tf.set_random_seed(777) x..

💻/ML 2020.08.03

[알고리즘] 카라추바의 빠른 곱셈(Karatsuba)

123 × 456 = ? 평소에 일상적으로 계산하던 방법을 분석적으로 풀어써보면 이렇다. 우리는 평소 한 자리에 0부터 9까지의 숫자만 사용하는 십진법을 사용하기 때문에, 각 자리별로 십의 자리 수는 다음 칸으로 넘겨준다(예를 들어 10의 자리 27은 (20 + 7)이므로 100의 자리로 2를 넘겨준다). (4 * 10000) + (13 * 1000) + (28 * 100) + (27 * 10) + (18 * 1) = (5 * 10000) + (6 * 1000) + (0 * 100) + (8 * 10) + (8 * 1) = 56088 최종적으로 값을 이렇게 계산해 낼 수있다. 456의 갯수만큼, 123의 각 원소(1, 2, 3)과 한 번씩 곱셈연산을 해야함을 알 수있다. 따라서 전통적인 방법으로는 만약 ..

[알고리즘] 분할정복(Divide & Conquer)

의 해당 단원 밑줄입니다. "분할 정복을 사용하는 알고리즘들은 대개 세 가지의 구성 요소를 갖고 있습니다. 문제를 비슷한 크기의 더 작은 문제로 분할하는 과정(divide) 각 문제에 대해 구한 답을 원래 문제에 대한 답으로 병합하는 과정(merge) 더이상 답을 분할하지 않고 곧장 풀 수 있는 매우 작은 문제(base case)" "같은 문제라도 어떻게 분할하느냐에 따라 시간 복잡도 차이가 커진다는 것을 보여주는 좋은 예입니다. 여러번 중복되어 계산되면서 시간을 소모하는 부분 문제들이 있기 때문입니다." ​​ 병합 정렬 (Merge Sort) 수열을 가운데에서 쪼개 두 개의 부분수열로 만들고, 각 부분 수열에 대해서도 같은 절차를 재귀 호출한다. 기저 사례(base case)까지 쪼개 값이 반환되면, ..