은근히 정규식을 사용할 일이 많아 정규식에서 사용되는 특수문자들의 기능, 자주 사용하는 정규식에 대해 정리해보고자 이 포스팅을 작성하게 되었다. 출처는 모두 아래 페이지에 있다. Mozilla : https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/정규식#special-negated-look-ahead 정규 표현식 정규 표현식은 문자열에 나타는 특정 문자 조합과 대응시키기 위해 사용되는 패턴입니다. 자바스크립트에서, 정규 표현식 또한 객체입니다. 이 패턴들은 RegExp의 exec 메소드와 test 메소드 ,�� developer.mozilla.org 정규식 사용법 // 리터럴 const reg = /ab*c/; // 생성자 함수 이용 let Reg ..
자바스크립트를 처음 배우면서 가장 당황했던 것은, 코드가 반드시 순차적으로 실행되지 않는다는 것이었다. 입력을 받아 입력값을 바탕으로 간단한 내용을 처리하는 코드를 짜면서도, 입력을 받기도 전에 내용을 처리하려 들어서 고작 20줄 정도를 짜면서도 상당히 애를 먹고서야, 이 문제가 JS의 비동기적 특성 때문인 것을 깨달았다. 그래서 비동기 처리 방법에 대해 간단히 짚고 넘어가기로 했다. 비동기 처리란 무엇인가? 비동기에 대해 이해하기 위해서는 우선 다른 프로그램들의 동작 방식인 동기에 대해 확실히 알고 있는 게 좋다. 동기(sync)란, 요청한 것에 대한 결과가 반환되기까지 그 자리에서 기다리는 처리 방식이다. 비동기(Async)란, 요청만 하고 결과 반환 여부와 상관 없이 다음 동작을 실행하러 움직이는 ..
실습 환경은 Python 3.6과 tensorflow 1.5이다. GAN (이미지 출처: Thalles Silva) 생성자(Generator)와 구분자(Discriminator)를 설정하여 대립적으로 작용하게 함으로써, 생성자가 더욱 진짜에 가까운 데이터(Noise -> Fake image)를 생성해내도록 하는 비지도학습 모델. GAN에 대한 예시를 들 때 빠지지 않는 설명이 이안 굿펠로우의 논문에 제시된 비유이다. 이 비유에서는, 생성자를 위조지폐를 생성하는 위조지폐범, 구분자를 경찰로 설정한다. 경찰이 위조지폐를 최대한 감별하려고 노력할수록, 위조지폐범 역시 더욱 정교한 위조지폐를 만들어내게 된다. 개인적인 생각으로는 보안 관리자와 해커 사이의 상호작용과도 닮은 것 같다. 보안 기술이 발전하고 암호화..
실습 환경은 Python 3.6과 tensorflow 1.5이다. 오토인코더(AutoEncoder) 정답이 주어지지 않고, 비슷한 데이터끼리 묶는 군집화에 주로 사용되는 비지도학습의 대표적인 신경망. 은닉층의 노드 수가 입/출력 계층의 노드 수보다 적다는 특징을 가진다. 그 이유는, 오토인코더가 데이터를 압축하거나 노이즈를 제거하는 데에 주로 사용되기 때문이다. 오토인코더로는 변이형 오토인코더(VA), 후자를 잡음제거 오토인코더(DA) 등 다양한 방식이 존재한다. 오토인코더 구현 역시 이번에도 MNIST 데이터셋을 이용한다. MNIST에 대해 잘 모른다면, 이전 포스팅을 참고하라. 2020/07/19 - [개발 일지/ML] - MNIST 학습 모델 만들기 MNIST 학습 모델 만들기 실습 환경은 Pyth..
실습 환경은 Python 3.6과 tensorflow 1.5이다. CNN(합성곱 신경망) 이미지 인식 분야에 주로 사용되는 신경망. 기본적으로 컨볼루션 계층과 풀링 계층으로 구성된다. 컨볼루션(합성곱) 계층 2차원 평면 행렬에서 지정된 윈도우의 값에 가중치와 편향을 적용해 하나의 값으로 압축하는 계층 한 윈도우당, 가중치는 윈도우의 크기와 같은 가중치를 곱해야 한다. 편향은 1개만 있으면 된다. ex) 28x28 입력층(이미지)에 대하여 3x3의 윈도우를 구성했을 때 필요한 최소 가중치의 개수는 3x3 9개, 편향의 개수는 9개이다. 왜 최소라고 적었냐면, 윈도우가 이동할 때 몇 칸씩 이동하냐에 따라 필요한 윈도우 개수가 달라지기 때문이다. 이 이동 범위를 우리는 스트라이드(stride)라고 부른다. 또..
실습 환경은 Python 3.6과 tensorflow 1.5이다. 드롭아웃(Dropout) 과적합(모델의 학습 결과와 학습 데이터가 너무 일치하여 이외의 데이터(테스트 데이터)에 대한 인식률이 떨어지는 현상) 문제를 해결하기 위해 등장한 기법. 학습 시 전체 신경망 중 일부만을 사용하도록 하여 가중치의 균형을 잡게 한다. 일반 학습 방법보다 학습 시간이 더 오래 걸린다는 단점이 있다. 모델은 이전 포스팅에서 사용한 MNIST 모델을 사용하였다. 2020/07/19 - [개발 일지/ML] - MNIST 학습 모델 만들기 MNIST 학습 모델 만들기 실습 환경은 Python 3.6과 tensorflow 1.5이다. MNIST 손으로 쓴 숫자 이미지를 모아 둔 데이터셋. 데이터가 잘 정제되어 있어, 학습자들에..
실습 환경은 Python 3.6과 tensorflow 1.5이다. MNIST 손으로 쓴 숫자 이미지를 모아 둔 데이터셋. 데이터가 잘 정제되어 있어, 학습자들에게 머신러닝 학습의 기초로 쓰인다. 1. 데이터셋 읽어 오기 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # read MNIST data mnist = input_data.read_data_sets("./mnist/data/", one_hot=True) 다음과 같이 간단하게 데이터를 읽어올 수 있다. 2. 신경망 모델 구성 MNIST 손글씨 이미지는 28x28 pixel로 이루어져 있다. 즉, 784개의 특징(X)으로 이루어져 있다. label ..
실습 환경은 Python 3.6과 tensorflow 1.5이다. 텐서보드(tensorboard) 텐서플로우에서 제공하는 기본 도구이다. 텐서보드를 이용하면 손실값, 정확도와 같은 결과값을 시각화하여 확인할 수 있다. 텐서보드를 이용하기 위해서는 모델을 다음과 같이 세팅해야 한다. 1. 계층을 name_scope로 묶기 with tf.name_scope('layer1'): W1 = tf.Variable(tf.random_uniform([2, 10], -1., 1.), name='W1') L1 = tf.nn.relu(tf.matmul(X, W1)) 다음과 같이 tf의 name_scope 함수를 통해 계층을 묶고 이름을 붙일 수 있다. 이는 이후 텐서보드의 그래프에서 확인할 수 있다. 계층 뿐만이 아니라 플..