본문 바로가기

오탈자 정보

[알고리즘 중심의 머신러닝 가이드(제2판)]_오탈자

현재까지 발견된 위 책의 오탈자 정보와 오류, 그리고 보다 매끄러운 문장을 위해 수정한 내용을 안내해드립니다. 집필과 편집 시에 미처 확인하지 못하고 불편을 끼쳐드려 죄송하다는 말씀을 드립니다. 아래의 오탈자 사항은 추후 재쇄 시에 반영하도록 하겠습니다. 


이외의 오탈자 정보를 발견하시면 옮긴이(jeonhyungkang@gmail.com)나 출판사(readers.jpub@gmail.com)로 연락주시면 고맙겠습니다.


최종수정일자: 2017년 10월 25일

1-2쇄본 오탈자


126쪽 세 번째 문단 1행에서(zedi님 제보, 편집 오류)

이 오차 함수는 ft-max 함수를

=>

이 오차 함수는 soft-max 함수를


377쪽 식 16.2에서 P(s)의 값 수정(parky님 제보, 원서 오류)

0.328 ==> 0.888


377쪽 식 16.4에서 P(a|s)의 값 수정(parky님 제보, 원서 오류) 

0.2105 ==> 0.0745



최종수정일자: 2017년 5월 8일

1쇄본 오탈자


283쪽 살사 알고리즘에서(dudwo56님 제보, 편집오류)

현재 정책을 사용해서 s행동을 선택한다.

=>

현재 정책을 사용해서 a 행동을 선택한다.


40쪽 식 2.23의 우변항에서(김*석 님 제보, 원서 오류)

E( ({x_i)-u)E( ({y_i)-v))

=>

E( ({x_i)-u) ({y_i)-v))


29쪽 식 2.6 아래 세 줄에서(이*수 님 제보, 번역 오류)

민감도(긍정률)는 긍정이라고 판별난 부분 중에 실제 긍정 예제들의 비율을 나타내며, 특이도는 부정이라고 판별난 부분 중 실제 부정 예제들의 비율을 나타낸다. 정밀도는 실제 긍정 예제들 중에 긍정이라고 제대로 맞게 분별된 비율을 나타내고,

=>

민감도(긍정률)는 실제 긍정 예제들 중에서 긍정이라고 판별된 부분의 비율을 나타내며, 특이도는 실제 부정 예제들 중에서 부정이라고 판별난 부분의 비율을 나타낸다. 정밀도는 실제 긍정이라고 판별난 부분 중에서 실제 긍정 예제들의 비율을 나타내고,



48쪽 두 번째 문단 6행에(강*관 님 제보, 편집 오류)

가소성(palticity)은

=>

가소성(plasticity)은


119쪽 하단 식 4.23의 우측 편미분 항에서(Unnamed 님 제보, 원서 오류)

(yk - sigma(wik * xi))

=>

(sigma(wik * xi) - tk)


29쪽 식 2.2(노*희 님 제보, 원서 오류)

정확도 = #TP + #FP / #TP + #FP + #TN + #FN

=>

정확도 = #TP + #TN / #TP + #FP + #TN + #FN


449-450쪽 코드 인덴트(들여쓰기) 전면 수정(최*렬 님 제보, 원서 오류)

(책의 코드를 아래 코드로 전면 수정해야 합니다. 참고로, 책과 함께 제공되는 예제 코드는 이상 없음을 알려드립니다)


    def updown(self,inputs,labels):


        N = np.shape(inputs)[0]


        # 가중치를 분리

        for i in range(self.nRBMs):

            self.layers[i].rec = self.layers[i].weights.copy()

            self.layers[i].gen = self.layers[i].weights.copy()


        old_error = np.iinfo('i').max

        error = old_error

        self.eta = 0

        for epoch in range(11):

            # 웨이크 단계

    

            v = inputs

            for i in range(self.nRBMs):

                vold = v

                h,ph = self.compute_hidden(v,i)

                v,pv = self.compute_visible(h,i)

    

                # 생성 가중치를 트레인

                self.layers[i].gen += self.eta * np.dot((vold-pv).T,h)/N

                self.layers[i].visiblebias += self.eta * np.mean((vold-pv),axis=0)


                v=h


            # 라벨이 있는 RBM을 트레인

            self.layers[self.nRBMs].contrastive_divergence(v,labels,silent=True)


            # 라벨이 있는 RBM을 샘플

            for i in range(self.nCDsteps):

                h,ph = self.layers[self.nRBMs].compute_hidden(v,labels)

                v,pv,pl = self.layers[self.nRBMs].compute_visible(h)


            # 클래스 오류 계산

            #print (pl.argmax(axis=1) != labels.argmax(axis=1)).sum()    


            # 슬립 단계

    

            # 라벨이 있는 RBM의 마지막 상태로 초기화

            h = v

            for i in range(self.nRBMs-1,-1,-1):

                hold = h

                v, pv = self.compute_visible(h,i)

                h, ph = self.compute_hidden(v,i)

            

                # 트레인 인식 가중치

                self.layers[i].rec += self.eta * np.dot(v.T,(hold-ph))/N

                self.layers[i].hiddenbias += self.eta * np.mean((hold-ph),axis=0)


                h=v

        

            old_error2 = old_error

            old_error = error

            error = np.sum((inputs - v)**2)/N

            if (epoch%2==0): 

                print epoch, error

            if (old_error2 - old_error)<0.01 and (old_error-error)<0.01:

                break